分享实施意味着什么?

时间:2013-04-02 12:56:43

标签: objective-c cocoa implementation shared

正如标题所述,我希望了解共享实现意味着什么。更具体地说,我想知道 HOW 它的工作原理。我明白这些词的意思,但我不清楚它是如何运作的过程。

实施例。 “快速枚举实现在Objective-C运行时和Foundation框架之间共享。”

这是Apple的Cocoa Fundamentals doc。我正在阅读并遇到这条线,并试图了解这个过程。

由于

1 个答案:

答案 0 :(得分:2)

这基本上涵盖了一种有点矛盾的编程模式(在我看来,这是错误的):Objective-C语言,libobjc运行时库和Foundation框架没有严格分开。例如,一些基本消息名称(例如retainrelease等)被硬编码到Objective-C运行时库中(例如,为了将ARC识别为特殊的内存管理相关的顺序)消息),这也是快速枚举的情况。

countByEnumeratingWithState:objects:count:选择器被编译器识别,并在遇到for (object in collection)语法时发出。然后,集合实现此协议NSFastEnumeration的硬连线消息的集合对象,根据运行时库的方式更新countobjects,其返回值等。 ABI期待它。

由于历史原因,这三种东西(语言/编译器,运行时库和Foundation框架)之间存在如此紧密的耦合,这种硬编码方法是可用的和现实的,但它也是一个很糟糕的东西违反语言和图书馆的分离。我甚至敢说这是一个非常糟糕的黑客。