码迷,mamicode.com
首页 > 移动开发 > 详细

iOS 通讯录基础

时间:2017-07-30 12:51:46      阅读:148      评论:0      收藏:0      [点我收藏+]

标签: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);

这两种方式相同是第一种不转换对象全部权。还是Foundation对象所以自己主动释放 。

另外一种转换对象全部权须要手动释放对象(CFRelease(arrayRef);)




iOS 通讯录基础

标签:view   nil   cfa   信息   abr   book   picker   混合   delegate   

原文地址:http://www.cnblogs.com/zhchoutai/p/7258498.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!