Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在阅读 Objective-C 运行时指南时,我遇到了以下语句:
在旧版运行时中,如果更改类中实例变量的布局,则必须重新编译从它继承的类。 在现代运行时,如果您更改类中实例变量的布局,则不必重新编译从它继承的类。
在旧版运行时中,如果更改类中实例变量的布局,则必须重新编译从它继承的类。
在现代运行时,如果您更改类中实例变量的布局,则不必重新编译从它继承的类。
有人可以为此提供一个例子吗?
当然。如果 Apple 要发布一个包含新实例变量的 AppKit.framework NSView,则每个包含子类(直接或间接)的单个 3rd 方库、框架或应用程序NSView(在该子类中也有实例变量)将具有重新编译,否则应用程序将不再工作。
NSView
在现代运行时,这不再是真的。Apple 可以使用附加的实例变量发布一个新的 NSView 实现,并且不会破坏子类。
或者,正如格雷格·帕克所说,“这一切都是为了不杀死小猫。”。