【问题标题】:Using LLVM GCC 4.2 won't let me _bridge a CFStringRef into an NSString使用 LLVM GCC 4.2 不会让我将 CFStringRef _bridge 到 NSString
【发布时间】:2012-01-12 10:12:29
【问题描述】:

我需要在我的 iPad 应用程序中绘制一些图表,所以我遵循了这个教程:

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)

谁能帮我解决这个问题?谢谢。

【问题讨论】:

  • 你试过__bridge和2个_吗?
  • 我现在就试一试。谢谢 KennyTM。
  • 肯尼 - 事实证明贾斯汀的回答是正确的(但是你发现错字是正确的)。感谢您的帮助。

标签: objective-c ios gcc


【解决方案1】:

关键字__bridge 有两个前导下划线。

猜测您的代码可能与您想要的相似:

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

(这是一个简单的例子,给定字符串)

【讨论】:

  • CocoaFu - 你说得对,我打错了字,需要双下划线。也就是说,贾斯汀的回答正确地回答了这个问题。不过感谢您的帮助。非常感谢。
【解决方案2】:

CocoaFu 发现了一个问题。

另一个问题是 GCC+LLVM 不支持 ARC——只有自 2011 年夏季以来的 Clang 版本支持 ARC。桥接铸造是 ARC 的补充。

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

【讨论】:

  • 谢谢贾斯汀。你这个男人。我现在已经删除了 CorePlot 的 0.9 版本(它不支持 ARC)并使用了他们最新的代码版本。非常感谢。
猜你喜欢
  • 2013-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多