Инициализировать объект с помощью экземпляра суперкласса

Допустим, есть суперкласс и экземпляр этого класса superclassObject .
Я создаю производный ClassA .

Как я могу создать (инициализировать) объект classAObject производного класса таким образом, чтобы все унаследованные поля были равны полям из superclassObject ?

Конечно, я могу циклически перебирать все поля и вручную копировать значения вроде classAObject.property = [superclassObject.property copy] . Но проблема с этим подходом в том, что я могу не знать (или не иметь доступа) все ivars / свойства суперкласса. Есть ли более простой (и более общий) способ?

Кажется, мне не хватает чего-то действительно простого ...

Я пытаюсь это сделать, потому что получаю уже инициализированный UIView (с рамкой, цветом фона , маска автоизменения размеров и т. д.), и я хочу заменить его своим пользовательским представлением с такими же параметрами.

Обновление 1

Я нашел этот вопрос , и в ответе там говорится, что он

обычно не поддерживается ни в одном объектно-ориентированном языке

, однако

В Objective-C это возможно в некоторых случаях

Хорошо, если он не поддерживается, что мне делать? Если он поддерживается , как я могу этого добиться?

Обновление 2

Кажется, я нашел решение моего частного случая этой общей проблемы, которую я протестирую и сообщу завтра.

Однако это привело меня к другой идее: Что, если я использую NSCoder для кодирования superclassObject (если он, конечно, реализует ), а затем вызываю [[ClassA alloc] initWithCoder: coder] с кодером, который знает данные из закодированного объекта суперкласса ? Заявление об ограничении ответственности: Ну, я не настолько знаком с концепциями кодирования (или даже совсем не знаком), поэтому, возможно, последнее предложение - ерунда.

17
задан Community 23 May 2017 в 12:32
поделиться