前言:可以说,经过了 iOS 7 和 iOS 8 连续两次重量级的变革和更新,对普通的 app 开发者来说,iOS 9 SDK 略归于缓和及平静,新的 SDK 在 API 和整体设计上并没有发生像之前两个系统那样翻天覆地的改变。开发者们也正可以利用这个机会稍作喘息,在这一年里尽快熟悉和至少过渡到使用 iOS 8 SDK 的特性来构筑自己的 app (比如尝试使用 Size Class 和 Presentation Controller 等)。尽量提升自己的职业能力和制作 app 的水平,并保证能跟上滚滚向前的 Apple 车轮,应该是今年 Cocoa 开发者们的主要任务。从近几年的 WWDC 技术路线图来看,Apple 开发可谓是环环相扣,如果哪一年你的技术停步不前,之后想要再赶上可能要付出的就是成倍的精力了。下面就简单总结一下对iPhone 端开发需要注意的几个点:
1.Xcode 7 免证书真机调试。教程:http://www.cnblogs.com/wahy/p/5004623.html
2.如果不适配iOS9,就不能偷偷在后台定位(不带蓝条,见图)!好消息:将允许出现这种场景:同一App中的多个location manager:一些只能在前台定位,另一些可在后台定位,并可随时开启或者关闭特定location manager的后台定位。如果没有请求后台定位的权限,也是可以在后台定位的,不过会带蓝条。
3.UIAlertView过期。用UIAlertController 可以代替其功能。
4.tableView刷新不出来问题。虽然现在的iOS9已经推送正式版了,但是iOS9使用时还是会感觉到App比以前更加卡顿了,tableView拖动时卡顿显示的最为明显。 并且之前遇到一个bug,原本好的项目用xcode7一编译,tableView刷新出了问题 ,[tableView reloadData]无效 有一行cell明明改变了但是刷新不出来。 感觉可能是这个方法和某种新加的特性冲突了,猜测可能是reloadData的操作被推迟到下一个RunLoop执行最终失效。
解决的方法是,注释[tableView reloadData],改用局部刷新,问题居然就解决了。
1
|
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone];
|
5.URL scheme
URL scheme一般使用的场景是应用程序有分享或跳其他平台授权的功能,分享或授权后再跳回来。
在iOS8并没有做过多限制,但是iOS9需要将你要在外部调用的URL scheme列为白名单,才可以完成跳转
如果iOS9没做适配 会报如下错误
1
|
canOpenURL: failed
for
URL :
"mqzone://qqapp"
- error:
"This app is not allowed to query for scheme mqzone"
|
具体的解决方案也是要在info.plist中设置 LSApplicationQueriesSchemes 类型为数组,下面添加所有你用到的scheme
6. iOS 8 自动开启多点触控,但是iOS9 默认不开启
在viewdidLoad里面增加:
self.view.multipleTouchEnabled=YES;
7.IOS9增加了语言后面的地区代码,中国 原来的zh-Hanz变成了zh-Hanz-CN
8. Xcode7打包不了老项目了,报错bitcode,解决方法,build setting中关闭bitcode,设置enable bitcode为NO。
9.iOS中部分字体可能有所调整间隙变大,label中显示不全等问题。