ABAddressBookRequestAccessWithCompletion线程安全
2014-10-17 14:27
465 查看
1、访问通讯录
iOS在第一次访问用户通讯录时,需要调用ABAddressBookRequestAccessWithCompletion然后在CallBack中调用UI模块进行联系人数据展示。一般的形式如下:
ABAddressBookRequestAccessWithCompletion(addressBookRef, ^(bool granted, CFErrorRef error) { if (granted) { //展示联系人数据 } else { //提示用户设置访问权限 } });
2、线程安全
用于回调的block是在子线程被调用,可以在block中添加如下代码:ABAddressBookRequestAccessWithCompletion(addressBookRef, ^(bool granted,CFErrorRef error) { if ([[NSThreadcurrentThread]isMainThread]) { NSLog(@"main thread"); } else { NSLog(@"child thread"); });
运行会发现,最后是子线程回调该block的,如果在子线程中直接操作UI模块是不被允许的,UI的操作应该放在主线程中:
ABAddressBookRequestAccessWithCompletion(addressBookRef, ^(bool granted, CFErrorRef error) {
// if ([[NSThread currentThread] isMainThread]) {
// //NSLog(@"main thread");
// }
// else
// {
// //NSLog(@"child thread");
// }
dispatch_async(dispatch_get_main_queue(), ^{
if (granted)
{
TKContactsMultiPickerController *contactMultiController = [[TKContactsMultiPickerController alloc] initWithGroup:nil];
contactMultiController.addressBook = self.addressBook;
contactMultiController.delegate = self;
[self.navigationController pushViewController:contactMultiController animated:YES];
}
else
{
[self.view makeToast:NSLocalizedString(@"your system Settin", nil)
duration:1.0
position:@"center"];
}
});
});
相关文章推荐
- ABAddressBook & AddressBook UI 文件介绍(IOS开发)
- ABAddressBook, 获得通讯录中联系人的所有属性
- ABAddressBookSave关于保存到通讯录失败的问题
- ABAddressBook个人使用总结,联系人中、英文排序及中、英文及号码搜索
- AddressBookUI.Framwork应用之ABPersonViewController, ABUnknownPersonViewController,ABNewPersonViewContro
- 不同iOS系统版本下ABPeoplePickerNavigationController和ABAddressBook访问系统通讯录的区别
- ABAddressBook个人使用总结,联系人中、英文排序及中、英文及号码搜索
- ABAddressBook 相关
- IOS开发 手机联系人获取与使用ABAddressBookRef
- "_ABAddressBookCreate", referenced from: -[IFlyContact contact] in iflyMSC(IFlyContact.o)
- "_ABAddressBookCreate", referenced from: -[IFlyContact contact] in iflyMSC(IFlyContact.o)
- ABAddressBook 学习笔记
- 设置、读取联络人头像 ---- save UIImage to ABAddressBook
- Access the Address Book
- 【iOS开发-114】ABAddressBook通讯录:增删改查的简单介绍,CF框架于F框架间的转换
- ABAddressBookCreate is deprecated: first deprecated in IOS6.0
- ABAddressBook简易操作
- AddressBook.Framework应用之ABAddressBookRef,ABRecordRef,ABMutableMultiValueRef,ABMultiValueRef
- IOS开发 手机联系人获取与使用ABAddressBookRef
- ABAddressBook