Objective-C ランタイム ガイドを読んでいるときに、次のステートメントに出くわしました。
従来のランタイムでは、クラス内のインスタンス変数のレイアウトを変更した場合、それを継承するクラスを再コンパイルする必要があります。
最新のランタイムでは、クラス内のインスタンス変数のレイアウトを変更した場合、それを継承するクラスを再コンパイルする必要はありません。
誰かがこれの例を提供できますか?
Objective-C ランタイム ガイドを読んでいるときに、次のステートメントに出くわしました。
従来のランタイムでは、クラス内のインスタンス変数のレイアウトを変更した場合、それを継承するクラスを再コンパイルする必要があります。
最新のランタイムでは、クラス内のインスタンス変数のレイアウトを変更した場合、それを継承するクラスを再コンパイルする必要はありません。
誰かがこれの例を提供できますか?
もちろん。Apple が新しいインスタンス変数を含む AppKit.framework を出荷した場合NSView
、サブクラス (直接的または間接的) を含むすべてのサードパーティ ライブラリ、フレームワーク、またはアプリケーションNSView
(そのサブクラスにもインスタンス変数が含まれる) は、再コンパイルしないと、アプリが機能しなくなります。
最新のランタイムでは、これは当てはまりません。Apple は、追加のインスタンス変数を含む NSView の新しい実装を出荷することができ、サブクラスを壊すことはありません。
または、グレッグ・パーカーが言うように、「子猫を殺さないことがすべてです。」.