在学习Objective-C2.x之前先学习Objective-C1.x是否值得?

在学习Objective-C2.x之前先学习Objective-C1.x是否值得?,objective-c,Objective C,我知道其中的一些区别,比如垃圾收集和64位支持,但我有一本基于1.x的书,我想知道我是否会浪费时间学习这些,然后在阅读后升级到2.1?许多Objective-C程序员在学习版本2之前就学习了版本1。你不会浪费时间从那本书中学习,但一旦你看完了它,并且对第1版感到满意,那么你就可以继续学习第2版了。如果您必须针对较旧的Mac OS X系统,了解这两个版本之间的差异非常重要 Objective-C 1.0代码仍然是有效的Objective-C 2.0代码。我遇到过一些程序员,他们甚至更喜欢Objec

我知道其中的一些区别,比如垃圾收集和64位支持,但我有一本基于1.x的书,我想知道我是否会浪费时间学习这些,然后在阅读后升级到2.1?

许多Objective-C程序员在学习版本2之前就学习了版本1。你不会浪费时间从那本书中学习,但一旦你看完了它,并且对第1版感到满意,那么你就可以继续学习第2版了。如果您必须针对较旧的Mac OS X系统,了解这两个版本之间的差异非常重要


Objective-C 1.0代码仍然是有效的Objective-C 2.0代码。我遇到过一些程序员,他们甚至更喜欢Objective-C1.0而不是Objective-C2.0。

许多Objective-C程序员在学习版本2之前就学习了版本1。你不会浪费时间从那本书中学习,但一旦你看完了它,并且对第1版感到满意,那么你就可以继续学习第2版了。如果您必须针对较旧的Mac OS X系统,了解这两个版本之间的差异非常重要


Objective-C 1.0代码仍然是有效的Objective-C 2.0代码。我遇到过一些程序员,他们甚至更喜欢Objective-C1.0而不是Objective-C2.0。

2.0和1.0不是一个非常有用的区别,因为两者之间的界限要模糊得多。Dreamlax的答案是正确的,但仅当应用于语法时,即使如此,仍然存在一些漏洞

特别是要考虑语言的句法,还有ABI;实际的二进制格式要考虑。还有一些功能只在LLVM中工作

不过,好消息是,正如dreamlax所说,无论是从语法角度还是从ABI的角度来看,你通常并不太在意2.0和1.0。从语法的角度来看,使用您想要的功能并完成它。从ABI的角度来看,1.0和2.0在学术上是有趣的,但对代码来说是不可见的。大多数细节通常只会成为框架和大型应用程序作者的问题。大部分

在任何情况下,在我的脑海里:

垃圾收集仅在Mac OS X i386和x86_64中可用

@属性是一种语法Objective-C2.0功能,可在所有平台和编译器上使用

块是C的扩展,与Objective-C兼容,并且从iOS 4开始,所有平台和编译器都可以使用块

块和C++仅在LLVM 2中支持,编译器尚未发布,但可以从

获得 @实例变量的合成仅在Objective-C2.0 ABI中可用,因为它是基于非脆弱IVAR的

LLVM 2.0中包含@property隐式IVAR的自动合成,目前是一项实验性功能

poseAsClass:在i386中不推荐使用,在x86_64&iOS中完全删除,即Objective-C 2.0 ABI中不存在

目的-C 1.0 ABI暴露类内脏作为结构。Objective-C2.0提供了API,用于获取和编辑任何缺失片段上的几乎所有内部文件缺陷,从而允许将来更改所述内部文件

零成本异常和统一C++/Objective-C异常都只存在于Objective-C2.0 ABI中,尽管x86_64和ARM之间的实现细节存在显著差异


我肯定我遗漏了一些东西。

2.0和1.0并不是一个非常有用的区别,因为两者的界限要模糊得多。Dreamlax的答案是正确的,但仅当应用于语法时,即使如此,仍然存在一些漏洞

特别是要考虑语言的句法,还有ABI;实际的二进制格式要考虑。还有一些功能只在LLVM中工作

不过,好消息是,正如dreamlax所说,无论是从语法角度还是从ABI的角度来看,你通常并不太在意2.0和1.0。从语法的角度来看,使用您想要的功能并完成它。从ABI的角度来看,1.0和2.0在学术上是有趣的,但对代码来说是不可见的。大多数细节通常只会成为框架和大型应用程序作者的问题。大部分

在任何情况下,在我的脑海里:

垃圾收集仅在Mac OS X i386和x86_64中可用

@属性是一种语法Objective-C2.0功能,可在所有平台和编译器上使用

块是C的扩展,与Objective-C兼容,并且从iOS 4开始,所有平台和编译器都可以使用块

块和C++仅在LLVM 2中支持,编译器尚未发布,但可以从

获得 @实例变量的合成仅在Objective-C2.0 ABI中可用,因为它是基于非脆弱IVAR的

@property隐含i的自动合成 VAR在LLVM2.0中,目前是一种实验性功能

poseAsClass:在i386中不推荐使用,在x86_64&iOS中完全删除,即Objective-C 2.0 ABI中不存在

目的-C 1.0 ABI暴露类内脏作为结构。Objective-C2.0提供了API,用于获取和编辑任何缺失片段上的几乎所有内部文件缺陷,从而允许将来更改所述内部文件

零成本异常和统一C++/Objective-C异常都只存在于Objective-C2.0 ABI中,尽管x86_64和ARM之间的实现细节存在显著差异


我肯定我错过了一些东西。

太好了!这正是我在这里所希望的是的,我还听说iPhone不支持所有的2.0功能,而且,作为我学习Obj-C的主要原因,至少目前来说,这使得它更适合。iPhone支持几乎所有的2.0 API和ABI功能,除了垃圾收集。太棒了!这正是我在这里所希望的是的,我还听说iPhone不支持所有的2.0功能,而且,作为我学习Obj-C的主要原因,至少目前来说,这使得它更适合。iPhone支持几乎所有的2.0 API和ABI功能,除了垃圾收集。