0
我想從iPhone的電話簿中獲取所有電話號碼。但是當我嘗試使用kABPersonPhoneProperty獲取數字時,我的應用崩潰了。代碼片段在這裏使用kABPersinPhoneProperty時應用程序崩潰
ABAddressBookRef addressBook = ABAddressBookCreate();
NSMutableArray *allPeople = (NSMutableArray*)ABAddressBookCopyArrayOfAllPeople(addressBook);
int nPeople = ABAddressBookGetPersonCount(addressBook);
CFRelease(addressBook);
for(int i=0; i < nPeople; i++){
ABRecordRef person = [allPeople objectAtIndex:i];
NSString *name = @"";
CFTypeRef fName = ABRecordCopyValue(person, kABPersonFirstNameProperty);
CFTypeRef lName = ABRecordCopyValue(person, kABPersonLastNameProperty);
ABMultiValueRef multi = ABRecordCopyValue(person , kABPersonPhoneProperty);
NSString *number = (NSString *)ABMultiValueCopyValueAtIndex(multi, 0);
if ([number length] > 0) {
if(fName != NULL)
{
if (lName != NULL) {
name = [[NSString stringWithFormat:@"%@", fName] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
}
else {
name = [[NSString stringWithFormat:@"%@", fName] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
}
NSLog(@"Number==>%@ ",number);
}
}
if (fName != NULL) {
CFRelease(fName);
}
if (lName != NULL) {
CFRelease(lName);
}
if (multi != NULL) {
CFRelease(multi);
}
}
[allPeople release];
我無法弄清楚這個錯誤。即使如此,它也不能順利運行。
運行構建和分析的代碼部分
ABMultiValueRef multi = ABRecordCopyValue(person , kABPersonPhoneProperty);
NSLog(@"Number===>%d" , ABMultiValueGetCount(multi));
請幫我來的時候,我甚至讓潛在的內存泄漏。
任何形式的幫助將不勝感激。
在此先感謝
請問你可以把崩潰日誌。它會給在這裏的人提供非常清楚的想法,這將幫助您真正快速地獲得幫助。 – 2011-03-02 11:50:27
最糟糕的部分是應用程序崩潰,沒有任何警告或消息 – devsri 2011-03-02 11:56:49
@devsri:崩潰而不通知用戶是Apple的方式。 – MusiGenesis 2011-03-02 12:05:00