在更改ivar布局时传统运行时和重新编译继承的类

时间:2012-09-04 05:10:48

标签: objective-c objective-c-runtime

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

  

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

     

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

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

1 个答案:

答案 0 :(得分:1)

不确定。如果Apple发布AppKit.framework,其中NSView包含一个新的实例变量,每个第三方库,框架或应用程序包含NSView的子类 - 直接或间接 - (

也必须重新编译该子类中的实例变量,否则应用程序将不再有效。

在现代运行时,这已不再适用。 Apple可以发布带有附加实例变量的NSView的新实现,而打破子类。

或者,正如格雷格帕克所说,“这就是不杀小猫的一切。”。