我在我的应用程序中有一个视图,它显示了一个加载到字段中的表单(电子邮件、名字、姓氏、出生日期)、钥匙串中的相应数据允许用户更改它等等。当有已经存储在钥匙串中的详细信息,但是如果什么都没有(当应用程序第一次运行时),当我去释放钥匙串时它会崩溃。为了节省内存泄漏,我想看看是否有更好的处理方式。我使用苹果的 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