Önişlemci makroları hata ayıklama için gerçekten harikadır. NSLog () ile ilgili yanlış bir şey yoktur, ancak kendi günlük kayıt işlevinizi daha iyi işlevlerle tanımlamak basittir. İşte kullandığım, günlük deyimlerini izlemeyi kolaylaştırmak için dosya adını ve satır 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
Bu ifadeyi kendi dosyasından ziyade önek başlığına koymayı daha kolay buldum. İsterseniz DebugLog'un normal Objective-C nesneleriyle etkileşime girmesini sağlayarak daha karmaşık bir günlük sistemi oluşturabilirsiniz. Örneğin, kendi günlük dosyasına (veya veritabanına) yazan ve çalışma zamanında ayarlayabileceğiniz bir 'öncelik' bağımsız değişkeni içeren bir günlük sınıfınız olabilir, bu nedenle hata ayıklama iletileri sürümünüzde gösterilmez, ancak hata iletileri ( bunu yaptıysanız, DebugLog (), WarningLog () vb.) yapabilirsiniz.
Oh, ve aklınızda bulundurun #define DEBUG_MODE
uygulamanızda farklı yerlerde yeniden kullanılabilir. Örneğin, uygulamamda lisans anahtarı denetimlerini devre dışı bırakmak ve yalnızca belirli bir tarihten önce çalışmasına izin vermek için kullanıyorum. Bu, benim için çok az çaba harcayarak zaman sınırlı, tamamen işlevsel bir beta kopya dağıtmamı sağlıyor.