我在ARC环境中的类型转换中遇到问题。如果有人也可以解决这个问题:

当我使用这一行代码时:
OSStatus status = SecItemCopyMatching((CFDictionaryRef) CFBridgingRetain(attributeQuery), (CFTypeRef*)&attributeResult);
然后我有错误:
cast of an indirect pointer to an objective C pointer to 'CFTypeRef *' is disallowed with ARC.
请建议我任何解决此问题的方法。
提前致谢..

最佳答案

问题是您将NSDictionary用作attributeResult而不是CFDictionary。试试这个,它应该可以工作(我使用相同的代码):

CFMutableDictionaryRef outDictionary = NULL;
if (!SecItemCopyMatching((__bridge CFDictionaryRef)tempQuery, (CFTypeRef *)&outDictionary) == noErr)
...
} else {
  // load the saved data from Keychain.
  keychainItemData = [self secItemFormatToDictionary:(__bridge NSDictionary *)outDictionary];
}
if(outDictionary) CFRelease(outDictionary);

10-08 05:49