iOS电话簿导入代码,当前仅仅实现主体框框程序,细节续订;Analysis不会导致内存泄漏
引用
#import <AddressBook/AddressBook.h>
#import
<AddressBookUI/AddressBookUI.h>
代码调试:XCode4.5,iOS6.0
主体代码
- (void)testAddress { ABAddressBookRef addressBook = nil; if ([[UIDevice currentDevice].systemVersion floatValue] >= 6.0) { addressBook = ABAddressBookCreateWithOptions(NULL, NULL); //等待同意后向下执行 dispatch_semaphore_t sema = dispatch_semaphore_create(0); ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) { dispatch_semaphore_signal(sema); }); dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER); dispatch_release(sema); } // else // { // addressBook = ABAddressBookCreate(); // } CFArrayRef results = ABAddressBookCopyArrayOfAllPeople(addressBook); NSLog(@"%@" ,results); int peopleCount = CFArrayGetCount(results); for (int i=0; i<peopleCount; i++) { ABRecordRef record = CFArrayGetValueAtIndex(results, i); NSLog(@"%@" ,record); NSString *fn,*ln,*fullname; fn = ln = fullname = nil; CFTypeRef vtmp = NULL; vtmp = ABRecordCopyValue(record, kABPersonFirstNameProperty); if (vtmp) { fn = [NSString stringWithString:vtmp]; CFRelease(vtmp); vtmp = NULL; } vtmp = ABRecordCopyValue(record, kABPersonLastNameProperty); if (vtmp) { ln = [NSString stringWithString:vtmp]; CFRelease(vtmp); vtmp = NULL; } NSLog(@"%@ ,%@" ,fn ,ln); // 读取电话 ABMultiValueRef phones = ABRecordCopyValue(record, kABPersonPhoneProperty); int phoneCount = ABMultiValueGetCount(phones); for (int j=0; j<phoneCount; j++) { // label CFStringRef lable = ABMultiValueCopyLabelAtIndex(phones, j); // phone number CFStringRef phonenumber = ABMultiValueCopyValueAtIndex(phones, j); // localize label CFStringRef ll = ABAddressBookCopyLocalizedLabel(lable); NSLog(@"\t%@ ,%@,%@" ,(NSString *)lable ,(NSString *)ll,(NSString *)phonenumber); if (ll) CFRelease(ll); if (lable) CFRelease(lable); if (phonenumber) CFRelease(phonenumber); } if (phones) CFRelease(phones); record = NULL; } if (results) CFRelease(results); results = nil; if (addressBook) CFRelease(addressBook); addressBook = NULL; }
转至:http://www.cnblogs.com/GoGoagg/archive/2012/12/20/2826804.html