2012-03-11 25 views

cevap

9

NSLog Elma sağlar Vakfı çerçevesi içine yerleşik bir işlevdir: Bu projenin kodu üzerinde ararken

Bu DLOG hakkında bulundu. Hiç DLog duymadım, bu yüzden baktığınız kod tarafından uygulanan standart dışı bir işlev olduğunu varsayalım.

+7

'DLog', 'Hata Ayıklama Günlüğü' anlamına gelir (I ' m varsaymak) ve genellikle "DEBUG" çevre bayrağının kapalı olup olmadığını değerlendiren bir makrodur - çoğunlukla nakliye uygulamalarında. –

+1

@Kurt: Hatta ilk başta bu projede hiçbir şey bulamadım. İşte baktığım proje bağlantısı: http://code.google.com/p/iphone-socks-proxy/ – slonkar

+1

[SocksProxy_Prefix.pch] 'da (http://code.google.com/ p/iphone-çorap-vekil/kaynak/göz/gövde/SocksProxy_Prefix.pch). –

13

DLog, hata ayıklamada NSLog() davranışını koşullu hale getirmek ve sürümlerini yayınlamak için kullanılan bir makrodur. Serbest bırakmak için hiçbir şey yazmaz. NSLog(), biçim dizelerini konsola yazdırmak içindir.

#ifdef DEBUG 
# define DLog(...) NSLog(__VA_ARGS__) 
#else 
# define DLog(...) /* */ 
#endif 
#define ALog(...) NSLog(__VA_ARGS__) 
+5

Bu doğru değil. 'NSLog', dize değişmezlerini konsolda yazdırmak için kullanılmamalıdır - bunun için isterseniz' printf' (veya 'fputs'') ve arkadaşlarınızı kullanabilirsiniz. NSLog'un noktası, sistem günlüğüne yararlı ve geçerli bilgiler yazdırmaktır. –

67

DLOG (bunun için sadece Google) yaygın olarak kullanılan bir "ayıklama NSLog" alternatiftir

İşte

Günlüğü #define yönergelerinin kümesidir (dahil: Burada

başvuru için onun tanımıdır ULOG, bir UIAlertView tabanlı Günlüğü özelliği)

// DLog will output like NSLog only when the DEBUG variable is set 

#ifdef DEBUG 
# define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__); 
#else 
# define DLog(...) 
#endif 

// ALog will always output like NSLog 

#define ALog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__); 

// ULog will show the UIAlertView only when the DEBUG variable is set 

#ifdef DEBUG 
# define ULog(fmt, ...) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:[NSString stringWithFormat:@"%s\n [Line %d] ", __PRETTY_FUNCTION__, __LINE__] message:[NSString stringWithFormat:fmt, ##__VA_ARGS__] delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]; [alert show]; } 
#else 
# define ULog(...) 
#endif 

Sadece bunları precompile başlık (.pch) dosyanıza koyun.

(kaynak: http://overbythere.co.uk/blog/2012/01/alternatives-nslog)

+0

Bu rockin 'teşekkürler! – capikaw

+0

Merhaba projemde bir PCH dosyası yok. Peki nereye koyayım? – GeneCode

+0

@Rocotilos belki de hızlı kullanıyorsunuz (yani, pch dosyası yok ..) – Pascal

8

Merhaba, NSLog yedek dosya biçimi için ve ayrıca ben Makro undef sözü yanı sıra aşağıda makro cmd Aşağıda

Tanımı:

#define _LOG_TO_CONSOLE_ //#undef _LOG_TO_CONSOLE_ 
#ifdef _LOG_TO_CONSOLE_ 
#define DLog(format, ...) NSLog(format, ##__VA_ARGS__) 
#else 
#define DLog(format, ...) 
#endif 
0

NSLog ile DLog arasındaki önemli farkın NSLog'un programın yürütülmesinden geri kalması olduğunu düşünüyorum. Tüm NSLog çağrılarını üretim/yayınlamada kaldırma), dolayısıyla hata ayıklama amaçları için DLog kullanılmalıdır.