文档章节

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

青卷三部
 青卷三部
发布于 2016/11/11 13:55
字数 778
阅读 24
收藏 0

我们先来回顾一下Xcode8发布以来,我们遇到的一些关于打印的问题,当然也有解决方法:

1、Xcode8打印问题

先看下面这个图片,相信使用Xcode升级到Xcode8的都不陌生吧。

当时的感觉就是莫名其妙,这里打印出来的一大堆日志,然而对于我们开发并没有多大用处,个人感觉是apple测试Xcode时查看的打印信息,发布时忘记删掉的原因(谨代表个人想法,若有错误,望指出)。当然,网上也给出了解决方法:很简单

 

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

2、Xcode8+iOS10  真机测试。

上面说了,我们为了屏蔽掉那堆没多大用处的log。添加了OS_ACTIVITY_MODE并设值为Disable。这也是前提,现在问题出现了:我使用iOS10真机测试时发现宏定义的NSLog打印在控制台不显示现象。当时首先想到的也是:添加了OS_ACTIVITY_MODE并设值为Disable的问题。如果不想看到那堆没多大用处的log,又想显示打印信息,怎么办?网上有一些给出的方法,也能很好的解决问题,但前提是你使用的宏定义大体是这样的:

#ifdef DEBUG
#define NSLog(...) NSLog(@"\n%s方法,\n第%d行,打印内容:\n%@\n打印结束\n", __PRETTY_FUNCTION__, __LINE__, [NSString stringWithFormat:__VA_ARGS__])
#else
#define NSLog(...)
#endif

那么你可以这样解决问题,方法如下:

#ifdef DEBUG
#define NSLog(format, ...) printf("[%s] %s [第%d行] %s\n", __TIME__, __FUNCTION__, __LINE__, [[NSString stringWithFormat:format, ## __VA_ARGS__] UTF8String]);
#else
#define NSLog(format, ...)
#endif

 

解释:这是因为在完成OS_ACTIVITY_MODE设置后会发现真机调试时NSLog不输出了。所以需要定义成另一个函数来输出,例如printf()。
可以看下这篇文章:Xcode8模拟器警告与iOS10真机调试NSLog无效

 

3、Xcode8.1 +iOS10以上系统,真机测试和模拟器测试,打印均不显示问题

<1>真机测试

  如果只是真机测试打印显示无效的话,可以直接按照上面第二个方法去解决,也是能解决问题的,究其原因:还是添加了OS_ACTIVITY_MODE并设值为Disable的问题。

<2>模拟器测试

  如果在改过真机测试打印显示无效的问题后,模拟器测试打印还是无效的话,现在的解决方法就直接了:删除OS_ACTIVITY_MODE并设值为Disable这个设置

为此也做过很多尝试,感觉对直接的方法还是直接去掉OS_ACTIVITY_MODE并设值为Disable这个设置,是最好的解决方法。Xcode8.1也解决了“打印一堆没多大用处的log”的问题,所以去掉一开始添加OS_ACTIVITY_MODE并设值为Disable 的想法吧。不过这还是只针对Xcode8以上(当然不包括Xcode8)。

 

 这篇文章也很不错:iOS开发-NSLog不打印设置

 

© 著作权归作者所有

共有 人打赏支持
青卷三部
粉丝 0
博文 8
码字总数 8364
作品 0
浦东
iOS工程师
iOS10 Log调试小工具

出发点 由于iOS10系统,在发布环境下(打成ipa包安装测试或者发布之后从App Store下载安装的包),使用Xcode已经无法查看我们自己打印的log。所以就做了一个小工具,查看log,便于调试。 楼主...

ljianbing
2017/06/20
0
0
关于升级 xcode8

郑重声明:楼主非大神,只是善于学习新技术,善于总结.非大神,非大神,非大神,重要的事情说三遍...... 升级xcode8已是必然,升级ios10的用户不能说大有人在,应该也不会少,楼主听说,如果不升级xco...

Jack088
2016/10/08
35
0
iOS开发Xcode8需要注意的那些坑

现在在苹果的官网上,我们已经可以下载到Xcode8的GM版本了,加上9.14日凌晨,苹果就要正式推出iOS10系统的推送了,在此之际,iOS10的适配已经迫在眉睫啦,不知道Xcode8 beat版本,童鞋们有木...

人生好迈
2016/09/28
3.8K
0
iOS10推送通知(本地&远程)/Swift

iOS10本地通知 一.发送一个简单的本地通知 1.注册通知

秦无炎
2016/12/22
247
0
iOS中常见的一些宏

1.处理NSLog事件(开发者模式打印,发布者模式不打印) 1 2 3 4 5 2.在OC语言的情况下导入某些头文件 1 2 3 3.处理循环引用问题(处理当前类对象) 1 4.获取屏幕宽高 1 2 5.判断iOS8或更高系统版本...

秦无炎
2016/09/13
1
0

没有更多内容

加载失败,请刷新页面

加载更多

springboot 上传图片(多张和单张都可以)

@RequestMapping("/upload") @ResponseBody public String handleFileUpload(HttpServletRequest request) { MultipartHttpServletRequest params = ((MultipartHttpServletRequest) request......

MrBoyce
1分钟前
0
0
Android Studio 3.X打开DDMS

Android Studio更新到3.0版本以后Tools菜单变成了这样了 DDMS入口找不到了 在设置里找到SDK的路径 打开tools文件夹 双击打开 monitor.bat文件 会出来一个黑色命令行框,稍等一下,熟悉的DDM...

lanyu96
6分钟前
0
0
js 进一法、四舍五入法、舍去法 保留两位小数

function format_number(num,len) { len = len > 0 && len <= 20 ? len : 2; var result = parseFloat(num); num=isNaN(result)?0:result; var numpow=Math.pow(10,len)......

xiaogg
12分钟前
0
0
Node.js中的不安全跳转如何防御详解

Node.js中的不安全跳转如何防御详解 导语: 早年在浏览器大战期间,有远见的Chrome认为要运行现代Web应用,浏览器必须有一个性能非常强劲的Java引擎,于是Google自己开发了一个高性能的开源的...

开元中国2015
13分钟前
1
0
国内首个区块链试验区在海南成立

据新华社报道,10月8日,海南自贸区(港)区块链试验区正式在海南生态软件园授牌设立,这也是目前为止国内第一个区块链试验区。 该试验区位于海南生态软件园,与试验区同一天成立还有2家研究...

问题终结者
15分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部