原文转载:https://blog.csdn.net/victorai60/article/details/48627283
%@ 对象
%d, %i 整型 (%i的老写法)
%hd 短整型
%ld, %lld 长整型
%u 无符整型
%f 浮点型和double型
%0.2f 精度浮点数,只保留两位小数
%x 为32位的无符号整型数(unsigned int),打印使用数字0-9的十六进制,小写a-f;
%X 为32位的无符号整型数(unsigned int),打印使用数字0-9的十六进制,大写A-F;
%o 八进制
%zu size_t
%p 指针地址
%e float/double (科学计算)
%g float/double (科学技术法)
%s char * 字符串
%.*s Pascal字符串
%c char 字符
%C unichar
%Lf 64位double
%lu sizeof(i)内存中所占字节数
打印CGSize:NSLog(@"%@", NSStringFromCGSize(someCGSize));
打印CGRect:NSLog(@"%@", NSStringFromCGRect(someCGRect));
或者CFShow(NSStringFromCGRect(someCGRect));
定义宏
由于NSLog的使用效率比较低,所以在我们的项目中非调试状态下不应该出现大量的NSLog,所以有些时候我们会在项目的.pch文件中去定义一个宏,让调试打印函数只在调试的时候有用,发布的时候就不能使用。
在Xcode6之前,项目中Supporting files文件夹下有个 “工程名-Prefix.pch”文件,你可以在该文件下声明我们的宏,这样之后工程中的任何一个文件中都可以使用该宏(也就是说可以在.pch中放一些全局的东西)。Xcode6之后,可能是因为大家把大量的头文件和宏定义放到pch里边,导致编译时间过长,苹果就去掉了pch文件,但是我们仍可以手动添加。
#ifdef DEBUG
#define NSLog(FORMAT, ...) MGLog(stderr,"%s:%d\t %s\n",[[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], __LINE__, [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);
#else
#define NSLog(...)
#endif
网友评论