iOS 9开发(适配)中需要注意的事项总结

       前言:可以说,经过了 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中显示不全等问题。

总结

正如上面提到的,对开发者来说,今年的 WWDC 并没有像 13 年和 14 年那样颠覆性的变化,大多是对已有特性的加强补充和对开发工具链的增强。今年可以说是一个 Cocoa 开发者们沉淀之前知识,增进自己技能的好机会。现在 WWDC 15 还在如火如荼的进行之中。如果你打算尽早拥抱新 SDK 的变化的话,请不要犹豫,直接访问 Apple 的开发者网站,去寻找和观看自己感兴趣的话题吧。暂时收集到这么多,后续有的话再编辑。


你可能感兴趣的:(Xcode,编程,编程,oc,info.plist,ios9)