Скажем, a имеет Superclass
и экземпляр этого класса superclassObject
.
Я создаю производную ClassA
.
Как я могу создать (инициализировать) объект classAObject
производного класса таким образом, чтобы все унаследованные поля были равны единицам superclassObject
?
Конечно, я могу перебирать все поля и вручную копировать значения, такие как classAObject.property = [superclassObject.property copy]
. Но проблема с этим подходом заключается в том, что я могу не знать (или иметь доступ) все ivars/свойства суперкласса.
Есть ли более простой (и более общий) способ?
Кажется, что я пропустил что-то действительно основное...
Я пытаюсь сделать это, потому что я получил уже инициализированный UIView (с фреймом, цветом фона, маской авторезистки и т.д.), и я хочу заменить его своим пользовательским представлением с теми же параметрами.
Обновление 1
Я нашел этот вопрос, и ответ там говорит, что он
обычно не поддерживается ни на одном языке OO
Однако
В Objective-C в некоторых случаях возможно
Хорошо, если он поддерживает не, что мне делать? Если он поддерживает , как я могу это достичь?
Обновление 2
Кажется, я нашел решение для моего конкретного случая этой общей проблемы, которое я буду тестировать и сообщать об этом завтра.
Однако это привело меня к другой идее: что, если я использую NSCoder для кодирования superclassObject
(если он реализует <NSCoding>
, конечно), а затем вызывает [[ClassA alloc] initWithCoder:coder]
с помощью кодера, который знает данные из закодированного superclassObject
? Отказ от ответственности: Ну, я не знаком с концепциями кодирования (или даже совсем не с ними), поэтому последнее предложение может быть абсурдным.