标签:view nil cfa 信息 abr book picker 混合 delegate
iOS 6 之后应用訪问通讯录须要获得用户授权,而且仅仅授权一次,即使卸载了之后再安装。也不用再次授权。
开发通讯录应用须要两个框架:
1.ABAddressBook 主要用于提供訪问通讯录中的记录和属性等API,使用他须要自己构建UI。
2.ABAddressBookUI 这个框架给我们提供了4个视图控制器以及对应的托付协议,他们已经提供了UI界面
ABAddressBook 框架中经常使用的类“()”前面的类为Foundation中的类。()内的是Core Foundation框架中类
ABAddressBook(ABAddressBookRef)封装訪问通讯录接口;
ABPerson (ABPersonRef)封装通讯录个人信息数据,是数据库的一条的记录。
ABGroup (ABGroupRef)封装通讯录信息数据,一个组包括多个人的信息,一个人的信息能够属于多个组;
ABRecord (ABRecordRef) 封装数据库中得一条记录,记录由属性组成;
ABAddressBookUI框架中的视图控制器
ABPeoplePickerNavigationController 他是从数据库中选取联系人导航控制器,相应的托付协议为ABPeoplePickerNavigationControllerDelegate
ABPersonViewController 查看并编辑单个联系人的信息,相应的托付协议为ABPersonViewControllerDelegate
ABNewPersonViewController 创建新联系人信息。相应的托付协议为ABNewPersonViewControllerDelegate
ABUnknowPersonViewController 呈现记录部分信息。这些信息能够创建新联系人的信息,或者加入到已存在的联系人,相应的托付协议为ABUnknowPwesonViewControllerDelegate
在使用ABAddressBook时我们使用的是Core Foundation框架; Core Foundation(c语言) 框架和Foundation(o-c)框架是同样的功能接口,假设要混合使用须要两个框架之间的“无开销桥接”;
这里用NSAArray来举个样例:
将Core Foundation类型转换为Foundation类型
CFArrayRef x; //第一种转换方式 NSArray *array = (__bridge NSArray *)x; //另外一种转换方式 array = CFBridgingRelease(x);
使用另外一种转换方式时转换对象全部权,并把对象全部权转让ARC ,不须要手动释放
将Foundation类型转换为Core Foundation类型
NSArray * array = nil; //第一种方式 CFArrayRef arrayRef = (__bridge CFArrayRef)array; //另外一种方式 arrayRef = CFBridgingRetain(array);
另外一种转换对象全部权须要手动释放对象(CFRelease(arrayRef);)
标签:view nil cfa 信息 abr book picker 混合 delegate
原文地址:http://www.cnblogs.com/zhchoutai/p/7258498.html