2012-01-12 103 views
2

我需要做一些图形在我的iPad应用程序绘制,所以我跟着这个教程:使用LLVM GCC 4.2不让我_bridge一个CFStringRef成一个NSString

http://recycled-parts.blogspot.com/2011/07/setting-up-coreplot-in-xcode-4.html

在我必须将我的C/C++/Objective-C编译器更改为LLVM GCC 4.2。 (最初是Apple LLVM Compiler 3.0)。

现在,我无法将_bridge将CFStringRef转换为NSString。我收到以下错误:

'_bridge' undeclared (first use in a function) 

任何人都可以帮我解决这个问题吗?谢谢。

+2

您是否尝试过使用'__bridge'与2'_'? – kennytm 2012-01-12 10:42:52

+0

我现在就来试试吧。感谢KennyTM。 – theDuncs 2012-01-12 11:55:46

+0

肯尼 - 原来贾斯廷的回答是正确的(但是你发现错字是正确的)。谢谢你的帮助。 – theDuncs 2012-01-12 14:51:24

回答

2

CocoaFu发现一个问题。

另一个问题是自从2011年夏天支持ARC以来,GCC + LLVM不支持仅支持ARC的Clang版本。桥接铸造补充ARC。

如果您需要GCC,您需要为程序添加手动引用计数,或者您可以将事物移动到单独的文件中,以查看ARC/MRC差异。或者你可以使用你的依赖库的早期版本,如果它们是需要ARC的。或...(更多选项)

+1

谢谢贾斯汀。你达人。我现在已经删除了0.9版本的CorePlot(不支持ARC),并使用了它的最新代码版本。非常感谢。 – theDuncs 2012-01-12 14:53:14

+0

@邓肯不客气 – justin 2012-01-12 19:37:27

3

关键字__bridge有两个主要的下划线。

猜测你的代码这可能是类似于你想要的东西:

CFStringRef cf = CFSTR("test"); 
NSString *ns = (__bridge_transfer NSString *)cf; 

(它被赋予常量字符串一个头脑简单的例子)

+0

CocoaFu - 你说得对,我犯了一个错字,需要双下划线。这就是说,贾斯汀的答案正确地回答了这个问题。尽管感谢您的帮助。非常感激。 – theDuncs 2012-01-12 14:52:24

相关问题