不兼容的类型铸造&#NSString *'到' CTStringRef *'

时间:2015-04-14 20:40:42

标签: objective-c xcode

我只是想将NSString *转换为CTStringRef *

    NSString *foobar = @"foobar";
    CFStringRef *tmp = (__bridge_retained CFStringRef*)foobar;

有人可以帮助解决此错误吗? “不兼容的类型使用__bridge_retained强制转换”将'NSString *'转换为'CTStringRef *'(又名const struct __CFString **)“

我尝试过简单的__bridge,它也不起作用。从文档中,我认为_retained是我需要的正确类型。 感谢。

1 个答案:

答案 0 :(得分:4)

如果仔细查看错误消息,您将看到问题所在。提示在这部分 -

  

__ CFString **

注意两个* - 这意味着您正在尝试强制转换为指向指针,或者换句话说是对引用的引用。 CTStringRef已经成为参考,正如“参考”所暗示的那样。部分名称,因此您不需要(__bridge_retained CFStringRef*)

中的*

您的代码应该是

NSString *foobar = @"foobar";
CFStringRef tmp = (__bridge_retained CFStringRef)foobar;