看NSLog
的文档,第一句话就说:Logs an error message to the Apple System Log facility.
,所以首先,NSLog
就不是设计作为普通的debug log的,而是error log;其次,NSLog
也并非是printf
的简单封装,而是Apple System Log
(后面简称ASL)的封装。
注释nslog :不用你把所有NSLog的删除或注释,直接修改#if 判断的值就行了(1执行,0不执行)
#if 1
#define NSLog(FORMAT, ...) fprintf(stderr,"[%s:%d行] %s\n",[[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], __LINE__, [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);
#else
#define NSLog(FORMAT, ...) nil
#endif
这样可以方便自己调试
其格式:
%@ 对象
%d, %i 整数
%u 无符整形
%f 浮点/双字
%x, %X 二进制整数
%o 八进制整数
%zu size_t
%p 指针
%e 浮点/双字 (科学计算)
%g 浮点/双字
%s C 字符串
%.*s Pascal字符串
%c 字符
%C unichar
%lld 64位长整数(long long)
%llu 无符64位长整数
%Lf 64位双字