当我在Objective-C中提到编程时,我应该包括2.0吗?

当我在Objective-C中提到编程时,我应该包括2.0吗?,objective-c,Objective C,这可能是主观的,但是,如果我在Objective-C2.0中编写一些代码,并且我在Twitter或博客上对此进行了描述,那么我应该将其称为Objective-C2.0还是仅仅称为Objective-C?使用Objective-C2.0。虽然你不必这么做,但它更清晰。它让人们知道你在谈论2.0。使用Objective-C2.0。虽然你不必这么做,但它更清晰。它让人们知道你在谈论2.0。除非你所写的是2.0版本的语言,否则只使用Objective-C 特别是关于堆栈溢出,更喜欢objective-c

这可能是主观的,但是,如果我在Objective-C2.0中编写一些代码,并且我在Twitter或博客上对此进行了描述,那么我应该将其称为Objective-C2.0还是仅仅称为Objective-C?

使用Objective-C2.0。虽然你不必这么做,但它更清晰。它让人们知道你在谈论2.0。

使用Objective-C2.0。虽然你不必这么做,但它更清晰。它让人们知道你在谈论2.0。

除非你所写的是2.0版本的语言,否则只使用Objective-C


特别是关于堆栈溢出,更喜欢objective-c而不是objective-c-2.0,因为很少有人遵循objective-c-2.0标记

,除非您所写的内容特定于语言的2.0版本,否则只使用objective-c


特别是关于堆栈溢出,更喜欢objective-c而不是objective-c-2.0,因为很少有人遵循objective-c-2.0标签,答案其实并不那么微妙。Objective-C2.0是一种名字,用于识别几年前在WWDC发布的Objective-C版本

然而,实际上有几种不同的东西可以解释为Objective-C2.0

有API、ABI、体系结构和平台

在所有这三个方面,Objective-C2.0都可以引用可用的特定语法特性集,并且在所有平台和体系结构中都[几乎]完全相同。一个区别是合成ivars;仅适用于64位Mac OS X和iPhone(但不适用于模拟器)

ABI——或应用程序二进制接口——指的是稍有不同的东西;内容在内存中的布局方式以及异常的处理方式。32位Mac OS X、64位Mac OS X和iPhone之间的例外情况实际上有所不同。32位MacOSX有非常昂贵的异常设置,但抛出成本很低。64位Mac OS X具有非常便宜的异常设置和稍微昂贵的投掷(它们是C++兼容的)。iPhone有C++兼容的异常,但不太便宜。 然后是架构;Intel、PPC和arm CPU的变体之间存在细微的差异

最后,平台;两个平台之间还存在其他差异——大部分是细微的,上面的描述量化了更大的差异

因此,Objective-C2.0实际上意义不大。它只是Objective-C,语言的微妙之处取决于目标平台、体系结构和操作系统版本。此外,Xcode工具链的发布可能会影响编译,因为某些bug可能会被修复,从而允许在其他情况下使用其他功能


所以,不,真的。。。。只要使用Objective-C

答案其实并不那么微妙。Objective-C2.0是一种名字,用于识别几年前在WWDC发布的Objective-C版本

然而,实际上有几种不同的东西可以解释为Objective-C2.0

有API、ABI、体系结构和平台

在所有这三个方面,Objective-C2.0都可以引用可用的特定语法特性集,并且在所有平台和体系结构中都[几乎]完全相同。一个区别是合成ivars;仅适用于64位Mac OS X和iPhone(但不适用于模拟器)

ABI——或应用程序二进制接口——指的是稍有不同的东西;内容在内存中的布局方式以及异常的处理方式。32位Mac OS X、64位Mac OS X和iPhone之间的例外情况实际上有所不同。32位MacOSX有非常昂贵的异常设置,但抛出成本很低。64位Mac OS X具有非常便宜的异常设置和稍微昂贵的投掷(它们是C++兼容的)。iPhone有C++兼容的异常,但不太便宜。 然后是架构;Intel、PPC和arm CPU的变体之间存在细微的差异

最后,平台;两个平台之间还存在其他差异——大部分是细微的,上面的描述量化了更大的差异

因此,Objective-C2.0实际上意义不大。它只是Objective-C,语言的微妙之处取决于目标平台、体系结构和操作系统版本。此外,Xcode工具链的发布可能会影响编译,因为某些bug可能会被修复,从而允许在其他情况下使用其他功能


所以,不,真的。。。。只要使用Objective-C

+1当大多数从事Mac和iPhone开发的人都在使用更现代版本的Obj-C时,更长的标签是一种浪费。rpetrich的答案就是我所写内容的简单形式。:)向上投票。+1当大多数从事Mac和iPhone开发的人都在使用更现代的Obj-C版本时,更长的标签是一种浪费。rpetrich的答案是我所写内容的简单形式。:)更重要的是,Objective-C语言的特性从一个操作系统变为另一个操作系统。在“Objective-C 2.0”之前添加了功能(例如例外),之后添加了功能(最重要的是块)。我认为Objective-C2.0这个名字特别有意义的唯一地方是当提到Objective-C2.0运行时API时,它在Obj-C2.0之前是相当一致的,在那个时候发生了很大的变化,并且从+1开始一直保持相当一致。除此之外,Objective-C语言的特性从一个操作系统变为另一个操作系统。在“Objective-C 2.0”之前添加了功能(例如例外),之后添加了功能(最重要的是块)。我认为Objective-C2.0这个名字特别有意义的唯一地方是当提到Objective-C2.0运行时API时,它在O