0

我尝试使用iOS 中的 UYLPasswordManager 和 Keychain Migration and Data Protection - Part 3,并在分析中收到警告,指出 [result release] 代码行中的对象可能存在泄漏。这是一个真正的潜在泄漏吗?如果是这样,我该如何解决?如果不是,我如何使警告静音?我的项目使用 ARC,但我已使用 UYLPasswordManager 对象的标志将其关闭。

- (void)searchKeychain {

if (self.keychainValue == nil) {
NSMutableDictionary *searchDictionary = [self newSearchDictionary];

[searchDictionary setObject:(id)kSecMatchLimitOne
                     forKey:(id)kSecMatchLimit];
[searchDictionary setObject:(id)kCFBooleanTrue
                     forKey:(id)kSecReturnData];

NSData *result = nil;
OSStatus status = SecItemCopyMatching((CFDictionaryRef)searchDictionary,
                                      (CFTypeRef *)&result);
[searchDictionary release];

if (result) {
   self.keychainValue = [[NSString alloc] initWithData:result
                          encoding:NSUTF8StringEncoding];
  [result release];
}
}
}
4

1 回答 1

1

假设您的 keychainValue 属性被声明为复制或保留您正在创建的新 NSString 。添加这样的自动释放消息:

self.keychainValue = [[[NSString alloc] initWithData:result encoding: NSUTF8StringEncoding] autorelease];
于 2013-05-30T22:17:21.053 回答