将NSURL **转换为CFURLRef *

时间:2013-02-22 00:33:59

标签: objective-c pointers automatic-ref-counting

如何使用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 *指针?

1 个答案:

答案 0 :(得分:10)

你正在做的大多数事情只是令人费解的指针健美操。为什么不这样做:

CFURLRef cfPointer = NULL;
geturl(&cfPointer);
NSURL *url = (__bridge NSURL *)cfPointer;
NSLog(@"Got URL: %@", url);