如何使用ARC编译以下代码?
int main() {
NSURL *url = [NSURL new];
NSURL * __strong *urlPointer = &url;
CFURLRef *cfPointer = (__bridge CFURLRef *)urlPointer;
geturl(cfPointer);
NSLog(@"Got URL: %@", url);
return 0;
}
我收到以下错误:
Incompatible types casting 'NSURL *__strong *' to 'CFURLRef *' (aka 'const struct __CFURL **') with a __bridge cast
我知道CFURLRef
已经是指针,所以CFURLRef *
是指向指针的指针,但我正在使用的外部函数(geturl
)需要CFURLRef *
1}}作为参数。
我无法控制这个功能,所以我无法改变它。
如何将urlPointer
转换为CFURLRef *
指针?
答案 0 :(得分:10)
你正在做的大多数事情只是令人费解的指针健美操。为什么不这样做:
CFURLRef cfPointer = NULL;
geturl(&cfPointer);
NSURL *url = (__bridge NSURL *)cfPointer;
NSLog(@"Got URL: %@", url);