iOS 通讯录基础

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);)




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值