我知道一些差异,比如垃圾收集和64位支持,但是我有一本基于1.x的书,我想知道我是否会浪费我的时间来学习,然后,在升级到2.1之后读?
2.0与1.0不是非常有用的区别,因为线条更加模糊.Dreamlax的答案是正确的,但只有在应用于语法时(并且,即便如此,也有一些漏洞).
特别地,是语言的语法,以考虑及里面还有ABI; 要考虑的实际二进制格式.还有一些功能仅适用于LLVM.
然而,正如dreamlax所说,好消息是,你通常不太关心2.0和1.0,无论是语法还是从ABI的角度来看.从语法的角度来看,使用您想要的功能并完成它.从ABI的角度来看,1.0 vs. 2.0在学术上很有趣,但对于你的代码是不可见的.大多数细节通常只会成为框架和大型应用程序作者的问题.大多.
在任何情况下,我的头顶:
垃圾收集仅适用于Mac OS X(i386和x86_64).
@property是一种语法Objective-C 2.0特性,可在所有平台和编译器上使用.
Blocks是C的扩展,与Objective-C兼容,并且从iOS 4开始,所有平台和编译器都可以使用.
块和C++仅在LLVM 2.0中受支持,LLVM 2.0是尚未发布的编译器,但可从http://llvm.org/获得.
实例变量的@synthesize仅在Objective-C 2.0 ABI中可用(非脆弱的iVars,它是基于它的).
的自动合成@property隐含的ivars在LLVM 2.0,目前作为实验功能.
poseAsClass: 在i386中已弃用并在x86_64和iOS中完全删除(即在Objective-C 2.0 ABI中不存在)
Objective-C 1.0 ABI将类内部暴露为结构.Objective-C 2.0提供了用于获取和编辑几乎所有内部的API(请查看任何缺失部分的文件错误),从而允许所述内部在将来发生变化.
"零成本例外"和"统一C++/Objective-C例外"仅在Objective-C 2.0 ABI中,尽管x86_64和ARM之间的实现细节有很大不同.
我确定我错过了一些东西.