我有一个返回NSError对象的函数:
NSData *foo(NSData *foo, NSError *__autoreleasing *outError);
这个函数使用一个API,该API需要指向CFErrorRef存储的指针。我想直接将outError
传递给底层函数,但我无法找到正确的声明关键字和转换关键字来让clang支持这个计划。有吗?
我有一个返回NSError对象的函数:
NSData *foo(NSData *foo, NSError *__autoreleasing *outError);
这个函数使用一个API,该API需要指向CFErrorRef存储的指针。我想直接将outError
传递给底层函数,但我无法找到正确的声明关键字和转换关键字来让clang支持这个计划。有吗?
试试这个:
NSError+CFErrorRef.h
@interface NSError (CFErrorRef)
- (CFErrorRef) cferror;
@end
NSError+CFErrorRef.m
#import "NSError+CFErrorRef.h"
@implementation NSError (CFErrorRef)
- (CFErrorRef) cferror
{
CFStringRef domain = (CFStringRef) self.domain;
CFDictionaryRef userInfo = (__bridge CFDictionaryRef) self.userInfo;
return CFErrorCreate(kCFAllocatorDefault, domain, self.code, userInfo);
}
@end
我编写了一个快速的单元测试来验证所有内容是否转换正确。然后,您只需在NSError对象上执行以下选择器即可:
CFErrorRef e = [error cferror];