gpt4 book ai didi

objective-c - LLVM 4.0 可以在 Xcode 4.3 中使用吗?

转载 作者:行者123 更新时间:2023-12-01 17:13:19 25 4
gpt4 key购买 nike

换句话说,使用文字,但针对 iOS 5。

我知道 this但那个帖子不是决定性的。

最佳答案

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

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

不过还有另一种理论……我只是做得不对^^;

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

编辑 (2 个月后现在 iOS 6 是公开的)。您绝对可以使用类别来绕过新的objective-c 文字语法的SDK 要求。在 NSArray 上添加类别和 NSDictionary对于 - (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如果对象尚不存在,则只需添加该对象,如果存在则替换它。

一个问题:YES 的定义和 NO在 iOS 6 中进行了更改以适应 NSNumber 的 bool 文字.因此,您需要执行以下操作:

#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这是一个错误。

关于objective-c - LLVM 4.0 可以在 Xcode 4.3 中使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11406611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com