Xcode8遇到的问题及解决方案!!!

http://blog.csdn.net/jnbbwyth/article/details/52576169

http://www.cocoachina.com/ios/20161227/18451.html

升级Xcode8已是必然,升级iOS 10的用户不能说大有人在,应该也不会少,楼主听说,如果不升级Xcode8,上架最新的包,那么可能应用在iOS 10 上是不支持的.so,这些Xcode8的新特性,你应该了解!!! 

1.快捷键  command + /   注释失效; 

解决方法1: Xcode -> preferences -> key bindings 中的comment selection 是否设置上快捷键了  

解决方法2: 第四个问题详解

2.Xcode8支持iOS 8以下真机测试方法:

  • 应用程序-Xcode 显示包内容-Contents-Developer-Platforms-iPhoneOS.platform-DeviceSupport 把里边 6.0 6.1 7.0 7.1 的文件夹粘贴到xcode8 对应的文件夹内  

  • 应用程序-Xcode 显示包内容-Contents-Developer-Platforms-iPhoneOS.platform-Developer-SDKs-iPhoneOS.sdk-SDKSettings.plist 文件下DefaultProperties - DEPLOYMENT_TARGET_SUGGESTE...  该数组中添加 6.0 6.1 7.0 7.1 对应的测试版本,(注意:如果你的文件是只读模式的,那么是不能修改的,你需要把Contents-Developer-Platforms-iPhoneOS.platform-Developer-SDKs-  iPhoneOS.sdk-SDKSettings.plist 这些文件的只读模式都改成读写模式)这个版本排序一定要是从小到大,直接把小的添加到下面是不管用的,必须把小的拖到最上边.这个时候退出你的Xcode,然后  重新启动,你就会发现ios8.0以下的真机 也可以正常测试了 

3.如果项目中包含证书

证书内包含的Id 必须与 bundle Id 保持一致才行,开发者team账号必须创建了 该 bundle Id 对应的证书,就是说不是所有的苹果账号都能真机测试了(这里说的是项目中有证书的前提下)

4.使用Xcode 8创建新项目

会让你选择开发者team为了自动生成对应的证书。在新老项目的General中也可以对签名进行设置,勾选自动管理证书(可选的),Xcode会自动替你生成调试证书和描述问题,证书与描述文件有效期为6天,避免了大量的垃圾冗余证书占用问题。

5.- (void)webView:(UIWebView *)webView didFailLoadWithError:(nullable NSError *)error;  变成了- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error

6.版本target 从8.0 起步了

但是老代码的7.1 用Xcode8 打开还是显示7.1,可以手写输入7.1,仍然管用.

7.之前两个汉字占用24宽度,现在占用27了

导致部分UI可能需要重新适配; 或者判断下当前系统版本,如果>=10.0,就让需要适配的控件调用  sizetofit  方法.

8.权限

* 麦克风权限:Privacy - Microphone Usage Description 是否允许此App使用你的麦克风?
* 相机权限: Privacy - Camera Usage Description 是否允许此App使用你的相机?
* 相册权限: Privacy - Photo Library Usage Description 是否允许此App访问你的媒体资料库?
* 通讯录权限: Privacy - Contacts Usage Description 是否允许此App访问你的通讯录?
* 蓝牙权限:Privacy - Bluetooth Peripheral Usage Description 是否许允此App使用蓝牙?
* 语音转文字权限:Privacy - Speech Recognition Usage Description 是否允许此App使用语音识别?
* 日历权限:Privacy - Calendars Usage Description 是否允许此App使用日历?
* 定位权限:Privacy - Location When In Use Usage Description 我们需要通过您的地理位置信息获取您周边的相关数据
* 定位权限: Privacy - Location Always Usage Description 我们需要通过您的地理位置信息获取您周边的相关数据

9.MJRefresh iOS10的系统上每次下拉刷新后没办法完全恢复Normal 状态  Y轴距离上总是相差20左右...(楼主个人也使用的MJ,表示暂时没有发现这个问题)
解决方案

10.Itunes Connect上传遇到问题,ERROR ITMS-90682: "Invalid Bundle. The asset catalog at 'Payload/ElitePlus.app/Assets.car' can't contain 16-bit or P3 assets if the app is targeting iOS releases earlier than iOS 9.3."   

解决方法一  解决方法二

    

11.iOS 10 因苹果健康导致闪退 crash  原文链接

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'NSHealthUpdateUsageDescription must be set in the app's Info.plist in order to request write authorization.'

12.新增了CAAnimationDelegate,之前使用CAAnimation的文件需要强制添加代理

13.上架苹果商店,如果上传了ipa,但是在提交的时候构建版本的地方没有?,那么请确定你应用中的权限是否已经添加,添加的权限描述是否填写,推送是否已经开启(视情况而定);

14.教你如何科学的在Xcode8上使用插件  

转自:AME_时雨 链接

好文推荐一

Xcode8的一些变动

内含:

证书管理/xib注意事项/代码及Api注意/代码注释不能用的解决办法/权限以及相关设置 6.字体变大,原有frame需要适配 7.推送 8.屏蔽杂乱无章的bug

好文推荐二

更新Xcode8的小伙伴是不是崩的不要不要的 

iOS 10相册相机闪退bug
iOS 10 因苹果健康导致闪退 crash
麦克风、多媒体、地图、通讯录
iOS 10相机等崩溃
iOS 10 配置须知
iOS开发 适配iOS 10以及Xcode8

好文推荐三

iOS 10 推送须知

好文推荐四

Xcode8新特性和坑                       

好文推荐五

iOS 10 不log

一、证书管理

用Xcode8打开工程后,比较明显的就是下图了,这个是苹果的新特性,可以帮助我们自动管理证书。建议大家勾选这个Automatically manage signing(Ps.但是在beat2版本我用的时候,完全不可以,GM版本竟然神奇的又好了。)


QQ20160913-8.png-96.9kB

下面我来说说可能会出现的问题:

1.Xcode未设置开发者账号情况下的截图


QQ20160913-0.png-38.5kB


解决办法是:大家在Xcode的偏好设置中,添加苹果账号,即可。

2.设备机器未添加进开发者的Device情况下的截图


QQ20160913-2.png-33.7kB


解决办法是:大家在官网将设备添加进开发机后,陪下描述文件重新下个描述文件即可。

3.正常情况:Xcode配置登录开发者账号后的图片,耐心等待即可。


QQ20160913-1.png-25.1kB


等待完成之后的图


QQ20160913-3.png-27kB

二、Xib文件的注意事项

使用Xcode8打开xib文件后,会出现下图的提示。


QQ20160913-9.png-41.7kB


大家选择Choose Device即可。
之后大家会发现布局啊,frame乱了,只需要更新一下frame即可。如下图


QQ20160913-11.png-113.2kB
  • 注意:如果按上面的步骤操作后,在用Xcode7打开Xib会报一下错误,

QQ20160913-12.png-32.3kB
  • 解决办法:需要删除Xib里面
    <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    这句话,以及把< document >中的toolsVersion和< plugIn >中的version改成你正常的xib文件中的值
    ,不过不建议这么做,在Xcode8出来后,希望大家都快速上手,全员更新。这就跟Xcode5到Xcode6一样,有变动,但是还是要尽早学习,尽快适应哟!

三、代码及Api注意

使用Xcode8之后,有些代码可能就编译不过去了,具体我就说说我碰到的问题。
1.UIWebView的代理方法:
**注意要删除NSError前面的 nullable,否则报错。

- (void)webView:(UIWebView *)webView didFailLoadWithError:(nullable NSError *)error
{
    [self hideHud];
}

四、代码注释不能用的解决办法

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

注意:Xcode8内置了开启注释的功能,位置在这里


QQ20160914-3.png

快捷键的设置在这里


QQ20160914-2.png

貌似Xcode8取消了三方插件的功能,具体可以查阅下Xcode8 Source Editor

五、权限以及相关设置

注意,添加的时候,末尾不要有空格
我们需要打开info.plist文件添加相应权限的说明,否则程序在iOS10上会出现崩溃。
具体如下图:


QQ20160914-0.png

麦克风权限:Privacy - Microphone Usage Description 是否允许此App使用你的麦克风?
相机权限: Privacy - Camera Usage Description 是否允许此App使用你的相机?
相册权限: Privacy - Photo Library Usage Description 是否允许此App访问你的媒体资料库?通讯录权限: Privacy - Contacts Usage Description 是否允许此App访问你的通讯录?
蓝牙权限:Privacy - Bluetooth Peripheral Usage Description 是否许允此App使用蓝牙?

语音转文字权限:Privacy - Speech Recognition Usage Description 是否允许此App使用语音识别?
日历权限:Privacy - Calendars Usage Description 是否允许此App使用日历?

定位权限:Privacy - Location When In Use Usage Description 我们需要通过您的地理位置信息获取您周边的相关数据
定位权限: Privacy - Location Always Usage Description 我们需要通过您的地理位置信息获取您周边的相关数据
定位的需要这么写,防止上架被拒。

六、字体变大,原有frame需要适配

经有的朋友提醒,发现程序内原来2个字的宽度是24,现在2个字需要27的宽度来显示了。。
希望有解决办法的朋友,评论告我一下耶,谢谢啦

七、推送

如下图的部分,不要忘记打开。所有的推送平台,不管是极光还是什么的,要想收到推送,这个是必须打开的哟✌️


QQ20160914-4.png

之后就应该可以收到推送了。另外,极光推送也推出新版本了,大家也可以更新下。

PS.苹果这次对推送做了很大的变化,希望大家多查阅查阅,处理推送的代理方法也变化了。

// 推送的代理
[<UNUserNotificationCenterDelegate>]

iOS10收到通知不再是在
[application: didReceiveRemoteNotification:]方法去处理, iOS10推出新的代理方法,接收和处理各类通知(本地或者远程)

- (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler { //应用在前台收到通知 NSLog(@"========%@", notification);}- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler { //点击通知进入应用 NSLog(@"response:%@", response);}

稍后我会更新文章,对推送做一个详细的讲解。

8.屏蔽杂乱无章的bug

更新Xcode8之后,新建立工程,都会打印一堆莫名其妙看不懂的Log.
如这些

subsystem: com.apple.UIKit, category: HIDEventFiltered, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 1,

屏蔽的方法如下:
Xcode8里边 Edit Scheme-> Run -> Arguments, 或者用快捷键打开:ctrl+shift+<,在Environment Variables里边添加
OS_ACTIVITY_MODE = Disable 

如果写了之后还是打印log,请重新勾选对勾,就可以解决了

 
6
原文地址:https://www.cnblogs.com/itlover2013/p/6225269.html