我的应用程序中有一个视图,显示加载到字段中的表单(电子邮件,名字,姓氏,出生日期),来自钥匙串的相应数据,允许用户更改它等。这样工作正常当已经存在于钥匙串中的细节时,如果没有任何东西(当应用程序第一次运行时),当我去释放钥匙串时它会崩溃。为了节省内存泄漏,我想看看是否有更好的做事方式。我使用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