1. 使用宏定義進行打印###
#define OPEN_LOG
#ifdef OPEN_LOG
//__LINE__ 代表行數(shù), __PRETTY_FUNCTION__ 代表當前的函數(shù)名
#define DLOG(fmt, ...) NSLog((@"[Line %d] %s\n" fmt), __LINE__, __PRETTY_FUNCTION__, ##__VA_ARGS__);
#else
#define DLOG(fmt, ...)
#endif
2. 使用格式化字符串進行打印###
在SDK中可能無法使用第一種打印方式, 可以使用這種方式控制打印,
//NS_FORMAT_FUNCTION(1,2)中的1 代表格式化字符串所在的位置, 2代表著從第二個位置開始檢查
-(void)log:(NSString *)logFormat,... NS_FORMAT_FUNCTION(1,2){
if(!openlog){
return;
}
va_list arglist;
va_start(arglist, logFormat);
NSString *outStr = [[NSString alloc] initWithFormat:logFormat arguments:arglist];
NSLog(@"打印log: %@", outStr);
va_end(arglist);
}
3. 打印調用堆棧###
NSLog(@"%@", [NSThread callStackSymbols]);