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

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

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

功能:

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

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

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

废话不多说,Here is the code:

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

#ifndef __OPTIMIZE__

#define NSLog(FORMAT, ...)  fprintf(stderr, "%s [%s-%d] %s\n", [[NSDate br_stringFromDate:[NSDate date] dateFormat:@"yyyy-MM-dd HH:mm:ss.SSSS"] UTF8String], [[[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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容