首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在ARC中使用CFTypeRef时出错

在ARC中使用CFTypeRef时出错
EN

Stack Overflow用户
提问于 2012-06-13 18:22:38
回答 1查看 1.9K关注 0票数 1

我基本上遵循了this tutorial,并很快意识到这个项目无法编译,因为我使用的是ARC。我设法使用__bridge (>.>)抑制了所有错误,但仍然收到一条错误消息,我设法读取了this stack question,但不知道如何将解决方案应用于我的问题。

基本上,给出问题的方法如下所示:

代码语言:javascript
运行
复制
+ (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;
} 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-13 19:28:17

我认为通过尝试强制转换指针到指针参数,您正在进行不必要的复杂类型转换。这样如何:

代码语言:javascript
运行
复制
CFTypeRef result = NULL;
BOOL statusCode = SecItemCopyMatching((__bridge CFDictionaryRef)searchDictionary, &result);
if (statusCode == errSecSuccess) {
    NSData *resultData = CFBridgingRelease(result);
    password = [[NSString alloc] initWithData:resultData encoding:NSUTF8StringEncoding];
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11012860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档