IOS获取系统通讯录联系人信息
2015-10-20 11:19
211 查看
IOS关于通讯录的开发有两种,一种是直接调用系统的通讯录界面,根据回调信息处理数据,另一种是直接获取系统的通讯录,完全自定义UI,并且可以通过官方给我们提供的接口进行读写。这篇博客主要讨论第二种方式。
一、权限注册
随着apple对用户隐私的越来越重视,IOS系统的权限设置也更加严格,在获取系统通讯录之前,我们必须获得用户的授权。权限申请代码示例如下:
几点注意:1、dispatch_semaphore_t三个相关的操作为
dispatch_semaphore_create 创建一个信号
dispatch_semaphore_signal 发送一个信号
dispatch_semaphore_wait 等待信号触发
dispatch_semaphore_create()创建一个信号,后面可以跟一个参数,表示信号量,当信号量正值时,dispatch_semaphore_wait后面的代码会被执行,否则程序将会一直等待在dispatch_semaphore_wait。 dispatch_semaphore_signal的作用是发送一个信号,会使信号量加1,相对的,dispatch_semaphore_wait执行后会使信号量减1.
2、因为是否被授权是在ABAddressBookRequestAccessWithCompletion的block回调中获取的,所以我们需要在外面做一个线程等待。
一点扩展:相同的方法,可以获取关联人信息,社交信息,邮箱信息,各种类型的电话信息,字段如下:
三、通讯录“写”的相关操作
看到上面读取信息的代码,你可能觉得一阵目炫,其实只是字段比较长,逻辑还是很简单的,同样,写的操作与之类似,创建,修改,删除,是我们对通讯录“写”的常用操作。
1、创建一个联系人
?
2、修改联系人
修改联系人的操作就是将获取和添加和在一起,先获取到相应的联系人引用,重设其属性字段即可。
四、重中之重-关于内存管理
上面的代码为了演示方便,创建的全部引用都没有释放,势必是造成内存泄露,在我们用ABAddressBookCreate()创建一个引用对象时,切记无论ARC还MRC,要用CFRelease()进行释放引用,例如上面的例子,我们需要加上这句代码
CFRelease(addBook);
如果你耐心的看到了这里,我想你一定明白了我为什么不在前边的代码里说明这个问题,因为在ARC项目普及的现在,这的确是重中之重。
一、权限注册
随着apple对用户隐私的越来越重视,IOS系统的权限设置也更加严格,在获取系统通讯录之前,我们必须获得用户的授权。权限申请代码示例如下:几点注意:1、dispatch_semaphore_t三个相关的操作为
dispatch_semaphore_create 创建一个信号
dispatch_semaphore_signal 发送一个信号
dispatch_semaphore_wait 等待信号触发
dispatch_semaphore_create()创建一个信号,后面可以跟一个参数,表示信号量,当信号量正值时,dispatch_semaphore_wait后面的代码会被执行,否则程序将会一直等待在dispatch_semaphore_wait。 dispatch_semaphore_signal的作用是发送一个信号,会使信号量加1,相对的,dispatch_semaphore_wait执行后会使信号量减1.
2、因为是否被授权是在ABAddressBookRequestAccessWithCompletion的block回调中获取的,所以我们需要在外面做一个线程等待。
二、获取通讯录联系人详细信息
//获取所有联系人的数组
一点扩展:相同的方法,可以获取关联人信息,社交信息,邮箱信息,各种类型的电话信息,字段如下:
//相关人,组织字段
三、通讯录“写”的相关操作
看到上面读取信息的代码,你可能觉得一阵目炫,其实只是字段比较长,逻辑还是很简单的,同样,写的操作与之类似,创建,修改,删除,是我们对通讯录“写”的常用操作。1、创建一个联系人
?2、修改联系人
修改联系人的操作就是将获取和添加和在一起,先获取到相应的联系人引用,重设其属性字段即可。3.删除联系人
?四、重中之重-关于内存管理
上面的代码为了演示方便,创建的全部引用都没有释放,势必是造成内存泄露,在我们用ABAddressBookCreate()创建一个引用对象时,切记无论ARC还MRC,要用CFRelease()进行释放引用,例如上面的例子,我们需要加上这句代码CFRelease(addBook);
如果你耐心的看到了这里,我想你一定明白了我为什么不在前边的代码里说明这个问题,因为在ARC项目普及的现在,这的确是重中之重。
相关文章推荐
- Android获取手机通讯录、sim卡联系人及调用拨号界面方法
- Python 实现简单的电话本功能
- Android通讯录开发之删除功能的实现方法
- extmail全局地址本生成脚本
- AH名片簿客户通讯录管理软件V3.78
- [应用模板]HTML5+Phonegap通讯录
- lync 通讯录
- 让IT工作者过度劳累的13个坏习惯
- 通讯录相关(编辑)
- android手机应用程序操作手机通讯录的联系人
- IOS打电话的3种方法
- iOS关于通讯录的实现
- Android跳转微信朋友圈与聊天界面
- Android备份、还原通讯录和短信
- 数据结构课程设计
- Android手机通讯录应用
- android---listview
- //实现中等难度通讯录。需求: //1、定义联系人类Contact。实例变量:姓名(拼音,首字母大写)、性别、电话号码、住址、分组名称、年龄。方法:自定义初始化方法(姓名、电话号码)、显示联系人信息
- ios8后点击通讯录跳转
- android查询通话记录小结