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_时雨 链接
好文推荐一
内含:
证书管理/xib注意事项/代码及Api注意/代码注释不能用的解决办法/权限以及相关设置 6.字体变大,原有frame需要适配 7.推送 8.屏蔽杂乱无章的bug
好文推荐二
iOS 10相册相机闪退bug
iOS 10 因苹果健康导致闪退 crash
麦克风、多媒体、地图、通讯录
iOS 10相机等崩溃
iOS 10 配置须知
iOS开发 适配iOS 10以及Xcode8
好文推荐三
好文推荐四
好文推荐五
一、证书管理
用Xcode8打开工程后,比较明显的就是下图了,这个是苹果的新特性,可以帮助我们自动管理证书。建议大家勾选这个Automatically manage signing(Ps.但是在beat2版本我用的时候,完全不可以,GM版本竟然神奇的又好了。)
下面我来说说可能会出现的问题:
1.Xcode未设置开发者账号情况下的截图
解决办法是:大家在Xcode的偏好设置中,添加苹果账号,即可。
2.设备机器未添加进开发者的Device情况下的截图
解决办法是:大家在官网将设备添加进开发机后,陪下描述文件重新下个描述文件即可。
3.正常情况:Xcode配置登录开发者账号后的图片,耐心等待即可。
等待完成之后的图
二、Xib文件的注意事项
使用Xcode8打开xib文件后,会出现下图的提示。
大家选择Choose Device即可。
之后大家会发现布局啊,frame乱了,只需要更新一下frame即可。如下图
- 注意:如果按上面的步骤操作后,在用Xcode7打开Xib会报一下错误,
- 解决办法:需要删除Xib里面
这句话,以及把< document >中的toolsVersion和< plugIn >中的version改成你正常的xib文件中的值<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
,不过不建议这么做,在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内置了开启注释的功能,位置在这里
快捷键的设置在这里
貌似Xcode8取消了三方插件的功能,具体可以查阅下Xcode8 Source Editor
五、权限以及相关设置
注意,添加的时候,末尾不要有空格
我们需要打开info.plist文件添加相应权限的说明,否则程序在iOS10上会出现崩溃。
具体如下图:
麦克风权限: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的宽度来显示了。。
希望有解决办法的朋友,评论告我一下耶,谢谢啦
七、推送
如下图的部分,不要忘记打开。所有的推送平台,不管是极光还是什么的,要想收到推送,这个是必须打开的哟✌️
之后就应该可以收到推送了。另外,极光推送也推出新版本了,大家也可以更新下。
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