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