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