iOS 6.1.3版本从地址簿数据库中获取联系人时崩溃



我已经开发了从地址簿数据库中获取联系人的应用程序。因此,实现的代码在iOS 6.0版本中很好,但在iOS 6.1.3上却崩溃了。

我从地址簿数据库中获取联系人的代码:

ABAddressBookRef addressBook;
if ([self isABAddressBookCreateWithOptionsAvailable]) {
    // iOS 6
    CFErrorRef error = nil;
    addressBook = ABAddressBookCreateWithOptions(NULL,&error);
    ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) { });
    ABAddressBookRevert(addressBook);
} else {
    // iOS 4/5
    addressBook = ABAddressBookCreate();
}
-(BOOL)isABAddressBookCreateWithOptionsAvailable
{
    return &ABAddressBookCreateWithOptions != NULL;
}

请帮帮我。

我不确定这段代码是否会崩溃,但我认为这应该在iOS 6.1.3中运行

-(IBAction)btnShowContactClicked {
//ABAddressBookRef addressBook = ABAddressBookCreate();
CFErrorRef *aberror = NULL;
addressBook = ABAddressBookCreateWithOptions(NULL, aberror);
__block BOOL accessGranted = NO;
if (ABAddressBookRequestAccessWithCompletion != NULL) { // we're on iOS 6
    dispatch_semaphore_t sema = dispatch_semaphore_create(0);
    ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {
        accessGranted = granted;
        dispatch_semaphore_signal(sema);
    });
    dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
    dispatch_release(sema);
}
else { // we're on iOS 5 or older
    accessGranted = YES;
}
if (accessGranted) {
    ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController  alloc] init];
    picker.peoplePickerDelegate = self;
    [self presentViewController:picker animated:YES completion:nil];
    //  //[self.navigationController presentModalViewController:picker animated:YES];
    [picker release];
}
}

最新更新