In Objective-C, können Sie ein Objekt der dynamische Typ zur Laufzeit ändern, indem Sie die Zuordnung zu ihm ist isa
Membervariable:Ist das Verhalten so definiert, dass die Isa eines Objective-C-Objekts geändert wird?
id object = ...;
object->isa = [SomeClass class];
Ist das nicht definiertes Verhalten? Momentan mache ich das als Klondis für etwas anderes, und es scheint zu funktionieren, aber ich fühle mich so schmutzig, es auf diese Weise zu machen. Die neue Klasse, die ich einstelle, fügt keine Membervariablen hinzu, überschreibt nur eine Methode und fügt eine neue hinzu, so dass die Klassengröße gleich ist. Ich habe das Gefühl, wenn ich die Objektgröße ändere, würde viel Schlechtigkeit resultieren.
möglich Duplikat von [Objective-C: Wie ändere ich die Klasse eines Objekts zur Laufzeit?] (Http://stackoverflow.com/questions/8512793/objective-c-how-to-change-the-class- of-a-object-at-runtime) –
Probleme mit KVO können auftreten. Sie benutzen Isa-Swizzling auch. Mike Ash hat jedoch eine komplette Lösung: http://www.mikeash.com/pyblog/friday-qa-2010-11-19-creating-classes-at-runtime-for-fun-and-profit.html – nielsbot