在最新的iOS SDK中,苹果提供了三种编译器选项:GCC、LLVM with Clang和LLVM-GCC.我或多或少理解这三个词的意思,LLVM和Clang是什么,等等.我不知道这对iPhone开发者在实践中意味着什么.截至2011年1月,我现在应该使用哪一种?LLVM是否足够成熟,我可以安全地使用它,而不会经常遇到错误?切换到LLVM还有其他缺点吗?如果是这样,那么速度优势是否超过了它们?除了速度,还有其他原因需要切换吗?

推荐答案

Update:因为人们仍然在寻找这个答案,我觉得我应该提供一个合适的更新.到目前为止,我希望大家都清楚,在编程时,Clang绝对是一种方式,在较新版本的Xcode中,Clang是默认的编译器,支持ARC和新的和即将出现的语言构造(数组和字典订阅、文本等).几乎完全没有理由再使用GCC编译了,对于使用ARC和新特性的代码库来说,使用普通GCC不再相关或可能(LLVM-GCC可能支持这些特性,但现在Clang已经完全稳定了,它与Clang相比没有优势).


到目前为止(在Xcode 4.0测试版中包含LLVM-2.0),LLVM已经足够成熟,可以用于生产代码.它的编译速度比GCC快一点,生成的代码也更快,所以尽可能地使用它(如果有更好的方法,尽量避免使用GCC).标准的Xcode 3.2.5安装包含LLVM-1.6(不是最新版本),因此我建议运行一些速度测试,看看GCC和LLVM之间是否有明显的差异,或者从源代码编译Clang并获得最新版本.

基本上,不再需要GCC,LLVM+Clang就足够了.

Objective-c相关问答推荐

如何在运行时向对象添加属性?

判断正在使用的应用程序版本

如何使用 NSString drawInRect 使文本居中?

在 viewDidAppear 之前无法正确设置框架

如何获取 AppIcon 的 UIImage?

CoreData 关系故障?

如何判断特定的 ViewController 视图当前是否可见?

如何测试生产推送通知?

如何在情节提要场景中嵌入自定义视图 xib?

类在两者中都实现.将使用两者之一

使用 DatePicker 展开和折叠 UITableViewCells

Objective-C 中是否有一些文字字典或数组语法?

从 UIPageViewController 中移除视图控制器

声音在 iPhone 模拟器中不起作用?

如何将小时数添加到 NSDate?

遍历 NSString 中所有字符的最有效方法

NS_ASSUME_NONNULL_BEGIN 宏

如何设置 NSPredicate 来查找具有 nil 属性的对象

如何从 UIColor 对象中获取红绿蓝 (RGB) 和 alpha?

当 UIView 框架更改时,视图内的 AVPlayer 层不会调整大小