У меня есть ситуация, когда я хочу создать объект, прежде чем я узнаю, каким он будет в конечном итоге. Я знаю, каким будет его суперкласс, и хочу временно создать конкретный экземпляр этого суперкласса и разрешить другим объектам использовать его в этой форме до тех пор, пока не будет создан его «истинный» класс.Возможно ли изменить объект Objective-C на другой тип во время выполнения?
Я понимаю, что это довольно сумасшедший, и у меня нет слишком высоких ожиданий, что это возможно, но если бы я мог это сделать, это было бы удивительно. Я знаю, что среда исполнения Obj-C имеет некоторые довольно мощные функции, поэтому подумал, что это, по крайней мере, стоит спросить.
Я посмотрел в object_setClass
, но при этом, как представляется, позволяет технически изменить класс объекта во время выполнения, он не позволяет реально перераспределить новый экземпляр, в комплекте со своим Иваром, в адрес исходного экземпляра, который действительно нужен мне, поскольку я не знаю конкретно, каким будет последний класс (он должен работать с любым пользовательским подклассом).
Справочная информация. Мое намерение состоит в том, чтобы предоставить объект-заполнитель, который позволит внешнему коду регистрировать зависимости и/или содержать ссылку, например, когда объект будет заполнен, эти внешние зависимости будут сохраняться, и они не придется исправлять их ссылки.
Я уверен, что попытка сделать это приведет к любым видам опасности. Возможно, кто-то с интимным знанием внутренних дел мог бы это сделать, но было бы неплохо сломать следующее небольшое обновление от Apple. –
Да, это должно быть то, что является стабильным и четко определенным, если нетрадиционным. – devios1
Попробуйте объяснить, что вам на самом деле нужно делать, и мы можем увидеть, есть ли лучшее решение, чем это. –