を使用していくつかのオブジェクトのクラスを変更していますobject_setClass(id object, Class cls)
。クラスを元のクラスのサブクラスに変更しています。次に、サブクラスでのみ定義されているいくつかのプロパティを設定しましたが、問題なく動作しているようです。
object_setClass
私が理解している限り、オブジェクトを再割り当てせず、isa
ポインタを変更するだけなので、これが機能することに少し驚きました。サブクラスインスタンスが元のクラスインスタンスよりもかなり大きい場合(つまり、より多くのivarがある場合)、オブジェクトが期待どおりに機能する方法がわかりません。
これは、メモリ内のオブジェクト間に大量のバッファメモリがあるためにのみ機能しますか(配置などのため)?
これは堅牢ですか、それとも特定の状況でクラッシュする可能性がありますか?