3

如何使用 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 *as 参数。我无法控制该功能,因此无法更改。

如何将urlPointer转换为CFURLRef *指针?

4

1 回答 1

10

你所做的大部分只是复杂的指针健美操。为什么不这样做:

CFURLRef cfPointer = NULL;
geturl(&cfPointer);
NSURL *url = (__bridge NSURL *)cfPointer;
NSLog(@"Got URL: %@", url);
于 2013-02-22T00:44:29.143 回答