В Objective-C вы можете изменить динамический тип объекта во время выполнения, присвоив ему isa
переменную-член:
id object = ...;
object->isa = [SomeClass class];
Это неопределенное поведение? В настоящее время я делаю это как стимул для чего-то другого, и это, кажется, работает, но я чувствую себя таким грязным, делая это таким образом. Новый класс, который я устанавливаю, не добавляет никаких переменных-членов, он просто переопределяет один метод и добавляет новый, поэтому размер класса такой же. Я чувствую, что если бы я изменил размер объекта, это привело бы к большому ухудшению качества.