获得使用CFTypeRef与ARC错误(Getting error using CFTypeRef

2019-10-16 20:35发布

我基本上遵循本教程 ,并很快实现,因为我用的是ARC项目将无法编译。 我成功地压制了使用所有错误__bridge (>>),但我仍然得到一个错误信息,我设法阅读栈的问题 ,但不知道如何该决议适用于我的问题。

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

+ (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;
} 

Answer 1:

我觉得你是想投的指针到指针参数进行不必要的复杂类型转换。 这个怎么样:

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


文章来源: Getting error using CFTypeRef with ARC