应用程序在释放keyChainItemWrapper时崩溃

时间:2013-07-09 10:08:25

标签: ios objective-c release keychain keychainitemwrapper

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

0 个答案:

没有答案