【问题标题】:Can LLVM 4.0 Be Used in Xcode 4.3?LLVM 4.0 可以在 Xcode 4.3 中使用吗?
【发布时间】:2012-07-10 04:28:59
【问题描述】:

换句话说,使用文字,但目标是 iOS 5。

我知道this,但该帖子不是结论性的。

【问题讨论】:

  • 至少有两个帖子与此重复:您已链接的帖子和stackoverflow.com/questions/11361180/…。更重要的是,您是否尝试过Is there any way to use LLVM 3 in Xcode 4.1 的解决方案?
  • 如果您有权访问 Mac 开发人员计划,您可以立即下载 Xcode 4.4 GM。否则,请等待几天,您就可以在 iOS5 代码中使用文字了。
  • 有没有办法在 Xcode 4.1 中使用 LLVM 3?试过了,Xcode 4.3用什么编译器没什么区别。

标签: objective-c ios xcode llvm


【解决方案1】:

您可以关闭编译器,但它并不像您想象的那样工作(我刚刚尝试过)。使用这种新语法对编译 SDK 有一些要求(即它可以在以前的 iOS 版本上工作,但您需要使用 iOS 6.0 SDK 编译它)。我不认为我现在可以在这里讨论它们,但它们在“Modern Objective-C”WWDC 2012 视频中有详细介绍。

基本上,您将拥有语法,但库不知道如何响应它。

虽然有另一种理论......我只是没有做对^^;

但最后,您没有必须使用 4.3 来部署到 5.x 应用程序。所以我的建议只是升级,它确实没有任何缺点(除非你很快部署一个应用程序,但在这种情况下,转换所有内容会很麻烦,因为我假设你几乎完成了)。

EDIT(2 个月后 iOS 6 公开)。您绝对可以使用类别来绕过新的objective-c 文字语法的SDK 要求。在NSArrayNSDictionary 上分别为- (id)objectAtIndexedSubscript:(NSUInteger)idx- (id)objectForKeyedSubscript:(id)key 添加仅返回objectAtIndex:objectForKey: 的类别(这就是他们在iOS 6 中所做的事情)。同样对于NSMutableArrayNSMutableDictionary,分别为- (void)setObject:(id)obj atIndexedSubscript:(NSUInteger)index- (void)setObject:(id)obj atIndexedSubscript:(NSUInteger)index 添加类别方法,如果对象不存在则简单地添加,如果存在则替换它。

一个问题:YESNO 的定义在 iOS 6 中进行了更改,以适应 NSNumber 的布尔文字。所以你需要做到以下几点:

#if __has_feature(objc_bool)
#undef YES //Before it was (BOOL)1
#undef NO //Before it was (BOOL)0

#define YES __objc_yes
#define NO __objc_no
#endif

原因是在新语法中已经定义了@( ... ) 语法(盒装表达式),而旧定义将解析为@(BOOL)1,这是一个错误。

【讨论】:

  • 视频是公开的;似乎没有任何理由不讨论它们的内容。新语法本身也是公开的:clang.llvm.org/docs/ObjectiveCLiterals.html,所以你可以直接说“当前版本的 Foundation 对象没有实现 objectAtIndexedSubscript: 和其他方法”。
  • @JoshCaswell 这些视频不需要您登录才能获取吗?
  • 是的,但是免费帐户就足够了,这不是真正的障碍。但是,这是您在 NDA 副本上的“签名”;我不想推动任何事情。感谢您试用,顺便说一句!
  • @JoshCaswell 啊,我不知道(我的雇主为该帐户付费,所以我从未注册过免费帐户)。感谢您的提示。
  • @JoshCaswell 在某些类别中添加objectAtIndexedSubscript 是一种选择吗?到目前为止,我已经创建了几个宏来别名为文字或括号符号,具体取决于#if __has_feature(objc_boxed_expressions)
猜你喜欢
  • 1970-01-01
  • 2011-07-15
  • 1970-01-01
  • 1970-01-01
  • 2012-03-27
  • 2012-04-08
  • 1970-01-01
  • 2011-06-02
  • 1970-01-01
相关资源
最近更新 更多