2013-05-30 73 views
0

我尝试使用来自iOS and Keychain Migration and Data Protection - Part 3的UYLPasswordManager,并在分析[结果发布]代码行中存在对象的潜在泄漏时收到警告。这是一个真正的潜在泄漏?如果是的话,我该如何解决它?如果不是,我该如何沉默警告?我的项目使用ARC,但我用UYLPasswordManager对象的标志关闭了它。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]; 
} 
} 
} 

回答

1

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

self.keychainValue = [[[NSString alloc] initWithData:result encoding: NSUTF8StringEncoding] autorelease];