En Objective-C, puede cambiar el tipo de dinámica de un objeto en tiempo de ejecución mediante la asignación a que es isa
variable miembro:¿Es comportamiento definido cambiar el isa de un objeto Objective-C?
id object = ...;
object->isa = [SomeClass class];
¿Este comportamiento indefinido? Actualmente estoy haciendo esto como un desafío para otra cosa, y parece estar funcionando, pero me siento tan sucio haciéndolo de esta manera. La nueva clase que estoy configurando no agrega ninguna variable miembro, simplemente anula un método y agrega uno nuevo, por lo que el tamaño de clase es el mismo. Siento que si cambiara el tamaño del objeto, se produciría mucha maldad.
posible duplicado de [Objective-C: ¿Cómo cambiar la clase de un objeto en tiempo de ejecución?] (Http://stackoverflow.com/questions/8512793/objective-c-how-to-change-the-class- of-an-object-at-runtime) –
Puede encontrarse con problemas con KVO. También usan isa-swizzling. Mike Ash tiene una solución completa, sin embargo: http://www.mikeash.com/pyblog/friday-qa-2010-11-19-creating-classes-at-runtime-for-fun-and-profit.html – nielsbot