連絡先の詳細を取得していて、shouldContinueAfterSelectingPersonメソッドでメモリの問題が発生しています。私はチュートリアルに従い、今週前に行いましたが、[製品]-> [分析]をクリックすると、次の3行に「オンラインで割り当てられたオブジェクトの潜在的なリーク」が表示されます。
[lastName setText:(__bridge NSString *)ABRecordCopyValue(person, kABPersonLastNameProperty)];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateOfBirth setText:birthday];
これらのエラーをクリックすると、次のように表示されます(ただし、3行目は2番のみです)。
関数'ABRecordCopyValue'を呼び出すと、保持カウントが+1のCoreFoundationオブジェクトが返されます。
オブジェクトがリークしました:割り当てられたオブジェクトは、この実行パスの後半で参照されておらず、保持カウントは+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];
これに関する修正はありますか?それを修正することはどれほど重要ですか?コード内のオブジェクトのリークの可能性がもう1つあります。
最後の注意:私はARCを使用しています。