关于Xcode8.1 / iOS10+ 真机测试系统打印或者宏定义打印不显示问题

最近做项目时遇到了很多莫名其妙的问题,其中就有这个打印(NSLog)。我们先来回顾一下Xcode8发布以来,我们遇到的一些关于打印的问题,当然也有解决方法:
1、Xcode8打印问题
先看下面这个图片,Xcode升级到Xcode8会打印一些乱七八糟的东西,对开发也没啥用。


关于Xcode8.1 / iOS10+ 真机测试系统打印或者宏定义打印不显示问题_第1张图片
799015-20161111103321577-1754824895.png

在EditScheme -> Run -> Arguments
在Environment Variables一栏中添加OS_ACTIVITY_MODE并设值为Disable,注意打勾。然后clean一下。运行项目即可解决。


关于Xcode8.1 / iOS10+ 真机测试系统打印或者宏定义打印不显示问题_第2张图片
799015-20161111105234530-1267032845.png

2、Xcode8+iOS10 真机测试。

上面说了,我们为了屏蔽掉那堆没多大用处的log。但是这样做在模拟器上是正常的,但是iOS10真机测试所有的Log日志全部被屏蔽了!这不是之前设置导致的,而是iOS10为了在真机上提高性能,所以把Log日志给屏蔽了。

解决办法:
自定义Log 需要用printf()进行转换,真机才能输出日志

// 可以输出纯净的内容:NSLog去掉时间戳及其他输出样式

#ifdef DEBUG
#define NNSLog(FORMAT, ...) fprintf(stderr,"%s\n",[[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);
#else
#define NNSLog(...)
#endif

// 我推荐用这个打印我们的日志:功能、行数

#ifdef DEBUG
#define NSSLog(FORMAT, ...) fprintf(stderr,"%s:%d\t%s\n",[[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], __LINE__, [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);
#else
#define NSSLog(...)
#endif

你可能感兴趣的:(关于Xcode8.1 / iOS10+ 真机测试系统打印或者宏定义打印不显示问题)