0

在阅读 Objective-C 运行时指南时,我遇到了以下语句:

在旧版运行时中,如果更改类中实例变量的布局,则必须重新编译从它继承的类。

在现代运行时,如果您更改类中实例变量的布局,则不必重新编译从它继承的类。

有人可以为此提供一个例子吗?

4

1 回答 1

2

当然。如果 Apple 要发布一个包含新实例变量的 AppKit.framework NSView,则每个包含子类(直接或间接)的单个 3rd 方库、框架或应用程序NSView(在该子类中也有实例变量)将具有重新编译,否则应用程序将不再工作。

在现代运行时,这不再是真的。Apple 可以使用附加的实例变量发布一个新的 NSView 实现,并且不会破坏子类。

或者,正如格雷格·帕克所说,“这一切都是为了不杀死小猫。”。

于 2012-09-04T05:49:16.350 回答