原文地址: http://www.infoq.com/articles/whats-new-ios9-frameworks
在2015年的WWDC大会上,苹果公司首次推出了 iOS 9。虽然新的 iOS 9 SDK 并没有引入像 iOS 8 那么多新的或改进的特性(iOS 8发布时包括了超过4000个新的API), 但它还是提供了大量的新功能和改进。伴随着新SDK的推出,iOS 9还同时集成了一些新的开发者工具以及新版的Swift和Objective-C(苹果主要编程语言)。
这一系列更新的目的在于引入所有在苹果最新的手机操作系统上开发app所需的东西--包括五篇涵盖 iOS 9 SDK的文章,Swift新的特性,Objective-C,开发者工具以及苹果最新的bitcode。
这篇InfoQ文章是其中的一部分“iOS 9开发者”。你可以通过RSS订阅接收相关通知。
联系人
新的联系人API对于之前的地址薄框架来说是个很有必要的替换,它主要提供了如下改进:
- 相比地址薄中对象无法跨线程而言提供了部分线程安全
- 优化了只读情况下的性能
- 针对地址薄中几种不透明的类型(例如ABRecordRef,ABPropertyID等)提供了高级API。
新的API的基础是CNContact类,这个类是线程安全的、Immutable(即在Swfit术语表中有语义值)并且提供联系人属性的访问权限(例如联系人的姓名、头像或者联系电话)。
CNContact有一个可变的子类名为CNMutableContact
,这个类可以修改联系人的属性值。你可以通过拷贝一个已存在的CNContact或者使用工厂方法来创建一个CNMutableContact的实例。相比CNContact,CNMutableContact不是线程安全的。
联系人的属性值是通过CNLabeledValue来表示的, 这个值是另一个不可变的,线程安全的类,该类将联系人属性值包含在元组中,例如家庭电话、工作电话、iPhone等。联系人属性可以有多个值,比如多个电话号码或邮件地址,这个是通过一个CNLabeledValue数组来表示的。联系人框架提供了一些定义好的标签例如CNLabelHome,CNLabelEmailiCloud等。当然,你也可以创建自定义标签。