llvm - llvm实际上是"现代 Objective C"的一个新版本,例如 Objective C 2.1?

  显示原文与译文双语对照的内容
100 5

在WWDC中,苹果为NSNumber和集合文本引入了新语法,在talk名为"现代 objective-c",。 我已经从 objective-c的objective-c 2.0上学习了。 Kochan 。

"现代 objective-c"是 objective-c 2.1,还是苹果的新语法被认为是替代,苹果对现有构造的语法( shorthand ) 是由编译器处理的现有构造。

( 我在线做了一些研究,但是只在 objective-c 运行时上下文中找到了术语"现代"和"旧的"。 我想知道语言中是什么,什么是预处理器指令,以及编译器指令。

时间: 原作者:

121 3

objective-c 被定义为C的扩展。 预处理器指令和编译器指令正是它们所对应的。

没有 objective-c 语言( 无标准)的"形式形式"定义。 苹果发布了一个文档,或多或少地解释了它。 语言也没有真正的"版本号"。 苹果有时会添加一个新特性,就是这样。 某一点苹果决定推广一系列的特性,但这并不意味着所有的早期版本都有相同的特征集,这意味着所有的后续版本都有相同的特征集。 苹果最近使用的名字是"现代 objective-c",它是一种支持所有当前已经定义特性的语言。

注意,某些功能是在编译器级别定义的,它的他部分是在库级别定义的,另一些则是。 如果使用在编译器级( 和新的文字语法一样) 完全实现的功能,那么它将为你编写和编译的任何程序工作。 但是如果使用在库级别定义的特性或者需要编译器和库支持,则只适用于运行最近库的系统。 例如 GC 。arc 和附加到 weak的零语义。

是的,"现代 objective-c"是一个新版本,你应该把它添加到语言中,然而,苹果会向语言中添加新的特性,这是很有可能的,它仍然会为你的语言 call 。 除了语言的一部分外,这些功能不仅取决于编译器,而且还依赖于编译的目标系统。 因此"现代 objective-c"程序目标 iOS 4将能够使用与"现代 objective-c"程序目标 OsX 10.8不同的特性集。

...