我想从我的钥匙串中获取用户名/密码。为此我遵循了这个指南:
但是ARC不允许这部分:
NSData *result = nil;
OSStatus status = SecItemCopyMatching(
(CFDictionaryRef)searchDictionary,
(CFTypeRef *)&result);
我该怎么办?
答案 0 :(得分:19)
ARC仅管理Objective-C类型。如果您转换为Core Foundation类型,则必须使用__bridge
,__bridge_retained
或__bridge_transfer
告知拥有该变量的ARC。
这是关于ARC下的免费桥接的Apple's official documentation,或者参见this blog post(向下滚动到免费电话桥接)以获得精彩的概述。
例如:
NSData *inData = nil;
CFTypeRef inTypeRef = (__bridge CFTypeRef)inData;
OSStatus status = SecItemCopyMatching(
(__bridge CFDictionaryRef)searchDictionary,
&inTypeRef);
答案 1 :(得分:1)
CFTypeRef inData = NULL;
OSStatus status = SecItemCopyMatching(
(__bridge CFDictionaryRef)searchDictionary,
& inData);
NSData *data = (__bridge NSData *)inData;