Vin*_*ngh 6 type-conversion ios automatic-ref-counting
我在ARC环境中的类型转换有问题.如果有人也愿意解决它:
当我使用这行代码时:
NSData *resultData = nil;
NSMutableDictionary *passwordQuery = [query mutableCopy];
[passwordQuery setObject: (id) kCFBooleanTrue forKey: (__bridge id) kSecReturnData];
status = SecItemCopyMatching((__bridge CFDictionaryRef) passwordQuery, (CFTypeRef *) &resultData);
Run Code Online (Sandbox Code Playgroud)
然后我收到一个错误:
Cast of an indirect pointer to an Objective C pointer to 'CFTypeRef*'(aka 'const void **')is disallowed with ARC.
请建议我任何方法来解决这个问题..
提前致谢..
结果数据类型只是CFTypeRef在调用之后才SecItemCopyMatching开始传入CFTypeRef:
CFTypeRef resultData = nil;
status = SecItemCopyMatching((__bridge CFDictionaryRef) passwordQuery, &resultData);
Run Code Online (Sandbox Code Playgroud)
由于查询指定的resultData应该是CFDataRef在resultData现在是CFDataRef,你现在可以施放它是这样.然后把它进一步投入到NSData.
CFDataRef resultCFData = (CFDataRef)resultData;
NSData *resultNSData = (__bridge NSData *)resultCFData;
Run Code Online (Sandbox Code Playgroud)
或者在一行中:
NSData *resultNSData = (__bridge NSData *)(CFDataRef)resultData;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1841 次 |
| 最近记录: |