iOS中NSLog打印中文及打印不全的宏

Xcode打印方法NSLog() 在Xcode8以后就出现了打印输出不完整、打印中文时候显示的问题,调试是在难受。

之前也用过printf替换NSLog,但是还是中文显示不了,于是用分类,就是重新写一个字典和数组的分类,重写他们的- (NSString *)descriptionWithLocale:(id)locale这个方法,搞得很麻烦。现在一个宏搞定,简单拖到pch头文件里就行。

功能:

在debug模式打印、release模式下不打印。

解决打印输出不完整,打印中文显示Unicode的问题。

由于里面用了NSString,如果前面没有添加其他头文件里包含,就可能报错,所以在pch文件里需要加:#import

废话不多说,Here is the code:

//修复打印不完整,打印中文显示Unicode码问题

#ifndef __OPTIMIZE__

#define NSLog(FORMAT, ...) fprintf(stderr, "[%s %s %s-%d] %s\n", __DATE__ , __TIME__, [[[NSString stringWithUTF8String: __FILE__] lastPathComponent] UTF8String], __LINE__, [[[NSString alloc] initWithData:[[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] dataUsingEncoding:NSUTF8StringEncoding] encoding:NSNonLossyASCIIStringEncoding] UTF8String]?[[[NSString alloc] initWithData:[[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] dataUsingEncoding:NSUTF8StringEncoding] encoding:NSNonLossyASCIIStringEncoding] UTF8String]:[[NSString stringWithFormat: FORMAT, ## __VA_ARGS__] UTF8String]);

#else

#define NSLog(FORMAT, ...) nil

#endif

你可能感兴趣的:(iOS中NSLog打印中文及打印不全的宏)