遇见奇葩之Xcode 8

更新了Xcode8之后,简直被它"强大"的报错能力所折服,各种莫名其妙的错误,下面是我的一些错误整理及相应的解决办法,有很多我都遇到过,亲测可以,还有一些是从网上搜集的.


前言

我个人之前的Xcode7版本不是从AppStore上下载的,因为下载速度太慢,而且遇到过下载过程中提示我下载失败的问题,所以我直接在某云盘下载了一个dmg格式的Xcode,而这次升级Xcode8我是在AppStore上下载安装的(是直接下载安装,不是更新),因为AppStore里面的更新界面,没有显示可用的Xcode8更新,我只能重新下载安装,安装好后发现它直接覆盖了之前的版本,而且打开我的项目工程,也没有遇到路径不对报错的问题,正当我高兴的时候,这个时候悲剧就来了,莫名其妙的报了十个红色的错误,下面是问题截图。

遇见奇葩之Xcode 8_第1张图片
问题截图

上图显示的这个问题,提示我有未申明的定义,就是告诉我某些宏定义不存在,我检查了pch文件的路径,是相对路径没有问题,所以排除了宏定义头文件路径引用不对的原因,我还尝试了重启Xcode,因为之前有的时候莫名其妙出现的比如无法导入头文件的问题,我直接重启Xcode之后就好了,但是这次没能如我所愿。最后我尝试删除编译器的DerivedData数据,之后这个问题解决了。具体步骤如下:

点击Finder--->前往文件夹/Users/你自己的电脑/Library/MobileDevice/ ----->找到资源库下的Developer -----> 在Developer下找到Xcode目录------->最后在Xcode目录下找到DerivedData目录 --------->删除出错的工程,之后重启工程就好了,问题迎刃而解

截图中所示警告还有的明确告诉我们在C99的规范中,不允许出现隐含声明的用法。这是C99规范中增加的规则,不过即便不遵守此规则,也仅仅是一个警告而已。
什么是隐含声明呢,也很简单,就是你调用函数的c文件中,没有正确包含对应的头文件。一般来说,c,c++都会将类,函数,的声明放在头文件中,这样在需要的时候包含对应头文件就可以了,在编译器的前期处理中,需要通过头文件来建立一些函数,变量,类的表,如果调用到了声明中没有的函数,编译器会认为是有危险的,显而易见,如果直接调用函数,在运行期间会出现程序异常。
因此强烈建议大家不要忽略这个警告,更不要象个别文章建议的那样把编译环境配置成C89,这样隐患依然存在。

看来在解决这些警告之前,还是多了解一下C89, C99这些语言标准比较好。

2.iOS 10 相机,相册,通讯录等系统权限问题

如果升级了iOS 10的手机下载了App,可能会导致应用崩溃。具体步骤如下,在plist文件添加下列字段即可。(凡是系统权限的问题,都需要在plist文件中,添加如下字段,HealthKit也需要,比如应用中涉及到读取用户的健康数据)

具体描述,可以自行定义

下面是一些常用的配置

| 系统权限 | 对应字段 |
|:----: |:------:|
|相机| Privacy - Camera Usage Description|
|麦克风|Privacy - Microphone Usage Description|
|相册| Privacy - Photo Library Usage Description|
|通讯录|Privacy - Contacts Usage Description|
|蓝牙|Privacy - Bluetooth Peripheral Usage Description|
|定位|Privacy - Location When In Use Usage Description|
|日历|Privacy - Calendars Usage Description |

3.iOS10 消息推送

用过极光推送的童鞋都知道,分为调试环境和正式环境,使用Xcode 8版本以后打包的应用,需要在Xcode 8中开启下面的功能,否则可能导致正式环境打包上传的应用无法接受到推送消息,极光后台推送的消息可能还会收到,但是自己服务器后台推送的消息,可能无法接收到。

必须将这个开关开启

iOS 10还引入新的推送framework,如下图。


遇见奇葩之Xcode 8_第2张图片
上午10.49.23.png

4.遇到xib下报的错误

如果你用SVN管理项目,我建议你,直接找到报错的xib文件,revert一下,我就是这样解决的。还有一种是在Xcode下打开xib文件,会提示你选择模拟器,如下图:

遇见奇葩之Xcode 8_第3张图片
截图

5.证书管理问题

新版的Xcode提供了证书管理功能,只要勾选下面的按钮。它会生成一个应用于你本地电脑的证书和配置文件。

证书管理配置

6.屏蔽杂乱无章的log打印

更新Xcode8之后,新建立工程,都会打印一堆莫名其妙看不懂的Log.
屏蔽的方法如下:Xcode8里边 Edit Scheme-> Run -> Arguments, 在Environment Variables里边添加OS_ACTIVITY_MODE = Disable


遇见奇葩之Xcode 8_第4张图片
707724-e81adf182229475f.png

7.代码注释插件不正常

这个是因为苹果解决xcode ghost,把插件屏蔽了。
解决方法打开终端,命令运行: sudo /usr/libexec/xpccachectl然后必须重启电脑后生效


日后会继续整理总结的,谢谢

新增 升级了Xcode之后,打开之前的工程,出现Xcode一直loading,无法载入的现象。

出错原因:可能是上次强制退出时保存xcode出错,导致之后每次打开xcode都会加载这个错误的工程,出现假死现象。

打开终端:cd /Users/mac/Library/Autosave\ Information/ (其中mac为当前登录用户名)
删除下面的文件:rm -rf Unsaved\ Xcode*
然后重新打开xcode就正常了。

你可能感兴趣的:(遇见奇葩之Xcode 8)