2

フィールドに読み込まれるフォーム (電子メール、名、姓、生年月日) を表示するビューがアプリにあり、キーチェーンからの対応するデータをユーザーが変更できるようにします。すでに詳細がキーチェーンに保存されていますが、何もない場合 (アプリを初めて実行したとき)、キーチェーンを解放しようとするとクラッシュします。メモリ リークを防ぐために、もっと良い方法がないか確認したいと思います。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
4

0 に答える 0