フィールドに読み込まれるフォーム (電子メール、名、姓、生年月日) を表示するビューがアプリにあり、キーチェーンからの対応するデータをユーザーが変更できるようにします。すでに詳細がキーチェーンに保存されていますが、何もない場合 (アプリを初めて実行したとき)、キーチェーンを解放しようとするとクラッシュします。メモリ リークを防ぐために、もっと良い方法がないか確認したいと思います。Apple の KeychainItemWrapper を使用していますが、私のプロジェクトでは ARC を使用していません。
これが私のコードです
// add data from keychain to fields if set
KeychainItemWrapper *keychainItem = [[KeychainItemWrapper alloc] initWithIdentifier:@"test" accessGroup:nil];
NSString *error;
NSData *dictionaryRep = [keychainItem objectForKey:kSecAttrService];
NSDictionary *dictionary = [NSPropertyListSerialization propertyListFromData:dictionaryRep mutabilityOption:NSPropertyListImmutable format:nil errorDescription:&error];
if (error) {
NSLog(@"An error occurred - %@", error);
}
else{
//successful so populate fields
email_.text = [dictionary objectForKey:@"email"];
firstName_.text = [dictionary objectForKey:@"firstname"];
lastName_.text = [dictionary objectForKey:@"lastname"];
dob_.text = [dictionary objectForKey:@"dob"];
}
[keychainItem release]; // crashes here with an EXC_BAD_ACCESS