关于Xcode8.1 / iOS10+ 真机测试系统打印或者宏定义打印不显示问题
前言:
最近做项目时遇到了很多莫名其妙的问题,其中就有这个打印(NSLog)。也不多废话了,我们先来回顾一下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不打印设置
关于Xcode8.1 / iOS10+ 真机测试系统打印或者宏定义打印不显示问题的更多相关文章
- iOS:Xcode8以下真机测试iOS10.0和iOS10.1配置包
一.介绍 xcode的升级都已经到8系列了,可是还是有很多开发者使用的xcode还是7系列,然而xcode7...最多支持9.3,无法给升级到10.0和10.1的iPhone手机用户进行真机测试.此时 ...
- 关于iOS10 Xcode8真机测试项目出现的问题 "code signing is required for product type 'xxxxx' in SDK 'iOS 10.0"..
昨天用真机测试项目出现这样的错误,在网上搜集了一些信息,所以将自己的经验分享出来帮助更多的人. 第一步: 检查你的1和2是否填写正确,如果你是运行别人的项目,BundleIdentifier要和你的X ...
- Xcode8适配iOS10.1真机测试
将10.1测试包相关文件存放到指定位置,如图步骤提示: 解压文件:
- 解决Xcode 9.2系统真机测试时出现 could not find developer disk image问题
解决Xcode在ipad/iphone 9.2 系统真机测试时出现could not find developer disk image问题 第一种方法:拷贝这个文件(http://download. ...
- 让Xcode8.0支持iOS11.2设备真机测试
最新支持11.2 (15C5097c)! 11.1 全版本! Xcode只可以支持iPhone手机对应iOS系统以下的真机测试.一般想要支持最新的iPhone手机系统,有两个方法. 第一.就需要更新X ...
- 让Xcode支持高版本系统设备真机测试
最新支持11.2 (15C107) Xcode只可以支持iPhone手机对应iOS系统以下的真机测试.一般想要支持最新的iPhone手机系统,有两个方法. 第一.就需要更新Xcode,这一个方法有一个 ...
- 解决Xcode真机测试时ineligible devices的问题
升级了Xcode到6.3,连接真机测试时,出现不能选择设备.如图: 设备系统版本是8.3的,Xcode连接其他低系统版本的设备做真机测试时就不会有这个问题. 有人说这是Xcode6.3的bug. 我的 ...
- iOS—Xcode 7真机测试
Xcode 7真机测试详解 1.准备 注意:一定要让你的真机设备的系统版本和app的系统版本想对应,如果不对应就会出现一个很常见的问题:could not find developer disk im ...
- Xcode真机测试could not find developer disk image解决方法
原文地址:http://my.oschina.net/u/2340880/blog/521700 Xcode真机测试could not find developer disk image解决方法 在使 ...
随机推荐
- js获取当前坐标
<script type="text/javascript"> var position_option = {enableHighAccuracy: false,max ...
- Java的发展历程
Java的发展历程充满了传奇色彩. 最初,Java是由Sun公司的一个研究小组开发出来的, 该小组起先的目标是想用软件实现对家用电器进行集成控制的小型控制装置. 开始,准备采用C++,但C++太复杂, ...
- Root--超级用户
http://www.shuame.com/root/ root (计算机术语言) ROOT存在于Linux系统.UNIX系统(如AIX.BSD等)和类UNIX系统(如稳定到服务器都在用的Debia ...
- php基础之gd图像生成、缩放、logo水印和简单验证码实现
gd库是php最常用的图片处理库之一(另外一个是imagemagick),可以生成图片.验证码.水印.缩略图等等.要使用gd库首先需要开启gd库扩展,windows系统下需要在php.ini中将ext ...
- 三列等高 css实现
实现这个三列等高 布局需要最外层的一个div wrap容器 里面有三个div容器 这个最外层div 需要移除隐藏 overflow:hidden; 关键点就是三列div 同时margin-botto ...
- gzip的使用
经常会有文件过大,给文件的传输和增添了很多的麻烦,早先得知apach有个base64貌似可以用来压缩文件,但是测试没有什么效果,反而增大了文件的大小.今天了解了java自带的gzip包,如获至宝,超级 ...
- R包igraph探究
前段时候由于项目的原因,需要画图,然后开始接触R语言的igraph包,网上零零散散的搜罗了不少的信息,放在这边交流分享的同时也给自己留个备份吧~ 1.首先是读取文件,基本选用的都是csv文件 edge ...
- 大熊君{{bb}}移动开发之旅(第一季)
一,开篇概述 Hi,大家好!大熊君又和大家见面了,从这篇文章开始我要和大家聊聊移动开发的话题,这部分文章共8季,分别从不同角度来讲解什么是移动开发?移动开发涉及到什么方面的技术点以及移动开发中的常见问 ...
- JavaScript getComputedStyle
我们使用 element.style 也可以获取元素的CSS样式声明对象,但是其与 getComputedStyle 方法还是有一些差异的. 首先,element.style 是可读可写的,而 get ...
- 原生JavaScript技巧
时常在技术论坛有看见一些比较好的示例,于是就出于一种收集并学习的态度,于是就保留下来啦~ 当然现在展示的也只是一部分,先放一部分出来尝尝鲜~~~