我正在获取联系方式,并且在我的 shouldContinueAfterSelectingPerson 方法中存在内存问题。我在几周前遵循了一个教程,但是现在当我单击产品-> 分析时,我在这 3 行中得到“在线分配的对象的潜在泄漏”:
[lastName setText:(__bridge NSString *)ABRecordCopyValue(person, kABPersonLastNameProperty)];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateOfBirth setText:birthday];
单击这些错误时,我得到(尽管第三行只有 2 号):
调用函数“ABRecordCopyValue”返回一个具有 + 1 保留计数的 Core Foundation 对象
对象泄漏:在此执行路径中稍后未引用分配的对象,并且保留计数为 + 1
完整代码如下所示:
- (BOOL)peoplePickerNavigationController: (ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person {
[firstName setText:(__bridge NSString *)ABRecordCopyValue(person, kABPersonFirstNameProperty)];
[lastName setText:(__bridge NSString *)ABRecordCopyValue(person, kABPersonLastNameProperty)];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MMMM d, yyyy"];
birthday = [dateFormatter stringFromDate:(__bridge NSDate *)ABRecordCopyValue(person, kABPersonBirthdayProperty)];
[dateOfBirth setText:birthday];
有没有解决这个问题,我修复它有多重要?我的代码中还有另一个潜在的对象泄漏。
最后一点:我正在使用 ARC。