SORU
19 Kasım 2008, ÇARŞAMBA


NSLog kullanılmamalıdır doğru() üretim kodu?

Bu site bu bir kaç kez söylendi, ama bu gerçekten böyledir emin olmak istedim.

Benim kod boyunca NSLog işlev çağrıları serpin edebilmek için bekliyordum, ve o böyle büyük mükafat/gcc Yayın/Dağıtım yapılar oluştururken otomatik olarak o çağırıyor şerit olacaktır.

Bu kullanmaktan kaçınmak gerekir? Eğer öyleyse, alternatifler arasında yaşanan en yaygın Objective-C programcıları nelerdir?

CEVAP
19 Kasım 2008, ÇARŞAMBA


Ön işlemci makroları gerçekten hata ayıklama için harika. Hiçbir şey NSLog bir sorun var () ama daha basit işlevselliği ile kendi günlük fonksiyonlarınızı tanımlamak için. Burada kullandığımız, dosya adı ve satır aşağı daha kolay günlük ifadeleri parça numarasını içerir.

#define DEBUG_MODE

#ifdef DEBUG_MODE
    #define DebugLog( s, ... ) NSLog( @"<%p %@:(%d)> %@", self, [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__] )
#else
    #define DebugLog( s, ... ) 
#endif

Daha kolay kendi dosyası yerine önek başlığında tüm bu deyimi koymak için buldum. Eğer isteseydin, DebugLog normal ile Objective-C nesne etkileşim alarak daha karmaşık günlük bir sistem inşa edebilirsin. Mesela, sen bir günlük sınıf yazar kendi günlük dosyası (veya veritabanı) ve içerir bir 'öncelik' argümanı olabilir ayarlamak için, çalışma zamanında çok hata ayıklama iletileri gösterilmez senin sürüm Sürüm ama hata mesajları (eğer yaptığın bu sen-ebil yapmak DebugLog(), WarningLog () ve benzeri).

Oh, ve #define DEBUG_MODE yeniden kullanılan uygulama farklı yerlerde olabilir unutmayın. Benim uygulamada örneğin, lisans anahtarı kontrolleri devre dışı bırakmak ve sadece Uygulama Eğer belli bir tarihten önce ise çalışmasına izin vermek için kullanıyorum. Bu benim parçası üzerinde en az çaba ile, tamamen işlevsel bir zaman sınırlı bir beta dağıtılmasını sağlar.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MagmaRhino

    MagmaRhino

    16 Temmuz 2011
  • talkandroid

    talkandroid

    27 Mayıs 2010
  • Tinkernut

    Tinkernut

    28 Aralık 2006