我有这个代码:
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker
shouldContinueAfterSelectingPerson:(ABRecordRef)personRecord
property:(ABPropertyID)property
identifier:(ABMultiValueIdentifier)identifier
{
//TODO: release phoneNumberProperty when done
ABMultiValueRef phoneNumberProperty = ABRecordCopyValue(personRecord, kABPersonPhoneProperty);
int selectedPhNum = ABMultiValueGetIndexForIdentifier(phoneNumberProperty, identifier);//Turns identifier into index
NSString *txtNum = (NSString *)CFBridgingRelease(ABMultiValueCopyValueAtIndex(phoneNumberProperty, selectedPhNum));
//NSLog(@"Selected ph num = %@", txtNum);
[[self toTextField] setText:txtNum];
phoneNumberProperty = nil;
[self dismissViewControllerAnimated:YES completion:NULL];
静态分析器说存在潜在泄漏。我知道我需要释放 phoneNumberProperty 但如何释放?我正在使用 ARC,因此 [phoneNumberProperty release] 无法正常工作。将它设置为零,它仍然会提示。
感谢帮助
最佳答案
使用 CFRelease 函数释放您的 ABMultiValueRef 变量:
...
if (phoneNumberProperty)
CFRelease(phoneNumberProperty);
关于ios - 使用 ABRecord 和 ARC 的潜在泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12642892/