假设一个有一个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
呢?免责声明:嗯,我对编码概念不太熟悉(甚至根本不熟悉),所以最后一句话可能是胡说八道。