當我使用構建和分析時,我得到了泄漏(它顯示爲對象的潛在泄漏)。以解決我包括如下修復對象的潛在泄漏
if (aContactfirstName){
CFRelease(aContactfirstName);
}
if (aContactLastName){
CFRelease(aContactLastName);
}
但我的應用程序崩潰。
請讓我知道它在哪裏泄漏並解決它。
-(NSString*)getContactNameByPhoneNo:(NSString*)phoneNO{
NSString *aContactName = phoneNO;
ABAddressBookRef addressbook = ABAddressBookCreate();
CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(addressbook);
CFIndex numPeople = ABAddressBookGetPersonCount(addressbook);
for (int i=0; i < numPeople; i++) {
ABRecordRef person = CFArrayGetValueAtIndex(allPeople, i);
ABMutableMultiValueRef phonelist = ABRecordCopyValue(person, kABPersonPhoneProperty);
CFIndex numPhones = ABMultiValueGetCount(phonelist);
for (int j=0; j < numPhones; j++) {
CFTypeRef ABphone = ABMultiValueCopyValueAtIndex(phonelist, j);
NSString *personPhone = (NSString *)ABphone;
NSLog(@"i am:");
personPhone =[personPhone stringByReplacingOccurrencesOfString:@"-"withString:@""];
personPhone=[personPhone stringByReplacingOccurrencesOfString:@")"withString:@""];
personPhone=[personPhone stringByReplacingOccurrencesOfString:@" "withString:@""];
personPhone=[personPhone stringByReplacingOccurrencesOfString:@"("withString:@""];
personPhone=[personPhone stringByReplacingOccurrencesOfString:@"+"withString:@""];
NSLog(@"xcxcxcxc");
CFRelease(ABphone);
if ([personPhone isEqualToString:phoneNO]){
NSString *aContactfirstName = (NSString *)ABRecordCopyValue(person, kABPersonFirstNameProperty) ;
NSString *aContactLastName = (NSString *)ABRecordCopyValue(person, kABPersonLastNameProperty) ;
if (aContactLastName != NULL && aContactfirstName != NULL){
aContactName = [NSString stringWithFormat:@"%@ %@",aContactfirstName,aContactLastName];
}
else if(aContactfirstName != NULL){
aContactName = aContactfirstName;
}
else if(aContactLastName != NULL){
aContactName = aContactLastName;
}
if (aContactfirstName){
CFRelease(aContactfirstName);
}
if (aContactLastName){
CFRelease(aContactLastName);
}
break;
}
}
CFRelease(phonelist);
}
CFRelease(allPeople);
CFRelease(addressbook);
return aContactName;
}
非常感謝提供答案 – user198725878