0

Objective-C ランタイム ガイドを読んでいるときに、次のステートメントに出くわしました。

従来のランタイムでは、クラス内のインスタンス変数のレイアウトを変更した場合、それを継承するクラスを再コンパイルする必要があります。

最新のランタイムでは、クラス内のインスタンス変数のレイアウトを変更した場合、それを継承するクラスを再コンパイルする必要はありません。

誰かがこれの例を提供できますか?

4

1 に答える 1

2

もちろん。Apple が新しいインスタンス変数を含む AppKit.framework を出荷した場合NSView、サブクラス (直接的または間接的) を含むすべてのサードパーティ ライブラリ、フレームワーク、またはアプリケーションNSView(そのサブクラスにもインスタンス変数が含まれる) は、再コンパイルしないと、アプリが機能しなくなります。

最新のランタイムでは、これは当てはまりません。Apple は、追加のインスタンス変数を含む NSView の新しい実装を出荷することができ、サブクラスを壊すことはありません。

または、グレッグ・パーカーが言うように、「子猫を殺さないことがすべてです。」.

于 2012-09-04T05:49:16.350 に答える