1. 使用宏定义进行打印###
#define OPEN_LOG
#ifdef OPEN_LOG
//__LINE__ 代表行数, __PRETTY_FUNCTION__ 代表当前的函数名
#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]);