Я изменяю класс некоторых объектов, используя object_setClass(id object, Class cls)
.Я изменяю класс на подкласс исходного класса.Затем я установил некоторые свойства, которые определены только для подкласса, и, кажется, все работает нормально.
Я был немного удивлен, что это сработало, потому что object_setClass
, насколько я понимаю, не перераспределяетобъект, он только изменяет указатель isa
.Если экземпляры подкласса значительно больше (то есть имеют намного больше иваров), чем исходные экземпляры класса, я не вижу, как объект может работать так, как ожидалось.
Работает ли это только потому, что имеется много буферапамять между объектами в памяти (из-за выравнивания и т. д.)?
Является ли это надежным или может произойти сбой при некоторых обстоятельствах?