【发布时间】:2013-02-22 00:33:59
【问题描述】:
如何使用 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 * 作为参数。
我无法控制该功能,因此无法更改。
如何将urlPointer 转换为CFURLRef * 指针?
【问题讨论】:
-
如果你的意思是做
geturl(urlPointer),那么不,因为我收到错误Implicit conversion of an indirect pointer to an Objective-C pointer to 'CFURLRef *' (aka 'const struct __CFURL **') is disallowed with ARC。
标签: objective-c pointers automatic-ref-counting