文档章节

关于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

没有更多内容

加载失败,请刷新页面

加载更多

下一页

49.Nginx防盗链 访问控制 解析php相关 代理服务器

12.13 Nginx防盗链 12.14 Nginx访问控制 12.15 Nginx解析php相关配置(502的问题) 12.16 Nginx代理 扩展 502问题汇总 http://ask.apelearn.com/question/9109 location优先级 http://blog....

王鑫linux
今天
1
0
Nginx防盗链、访问控制、解析php相关配置、Nginx代理

一、Nginx防盗链 1. 编辑虚拟主机配置文件 vim /usr/local/nginx/conf/vhost/test.com.conf 2. 在配置文件中添加如下的内容 { expires 7d; valid_referers none blocked server_names *.tes......

芬野de博客
今天
0
0
spring EL 和资源调用

资源调用 import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.PropertySource;import org.springframework.core.io.Resource;......

Canaan_
今天
1
0
memcached命令行、memcached数据导出和导入

一、memcached命令行 yum装telnet yum install telent 进入memcached telnet 127.0.0.1 11211 命令最后的2表示,两位字节,30表示过期时间(秒) 查看key1 get key1 删除:ctrl+删除键 二、m...

Zhouliang6
今天
1
0
Linux定时备份MySQL数据库

做项目有时候要备份数据库,手动备份太麻烦,所以找了一下定时备份数据库的方法 Linux里有一个 crontab 命令被用来提交和管理用户的需要周期性执行的任务,就像Windows里的定时任务一样,用这...

月夜中徘徊
今天
1
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部