使用CFTypeRef与ARC获取错误

我基本上遵循这个教程 ,很快就意识到这个项目不会编译,因为我正在使用ARC。 我设法使用__bridge (>。>)来抑制所有的错误,但是我仍然得到一个错误信息,并且我设法读取这个堆栈问题 ,但是不知道如何将解决scheme应用于我的问题。

基本上给我这个问题的方法是这样的:

 + (NSString*)getPasswordForKey:(NSString*)aKey { NSString *password = nil; NSMutableDictionary *searchDictionary = [self dictionaryForKey:aKey]; [searchDictionary setObject:(__bridge id)kSecMatchLimitOne forKey:(__bridge id)kSecMatchLimit]; [searchDictionary setObject:(id)kCFBooleanTrue forKey:(__bridge id)kSecReturnData]; NSData *result = nil; SecItemCopyMatching((__bridge CFDictionaryRef)searchDictionary, (CFTypeRef *)&result); if (result) { password = [[NSString alloc] initWithData:result encoding:NSUTF8StringEncoding]; } return password; } 

我认为你正在通过试图转换指针指针参数进行不必要的复杂types转换。 这个怎么样:

 CFTypeRef result = NULL; BOOL statusCode = SecItemCopyMatching((__bridge CFDictionaryRef)searchDictionary, &result); if (statusCode == errSecSuccess) { NSData *resultData = CFBridgingRelease(result); password = [[NSString alloc] initWithData:resultData encoding:NSUTF8StringEncoding]; } 
Interesting Posts