这是一个普遍的问题。我可以把我的问题分成两部分:
我有一个ChildClass类,来自ParentClass。
1)我想定义一个initFromParentClass
方法,其签名为
- (id) initFromParentClass:(ParentClass)anObjectFromTheParentClass
这将基于ChildClass
创建anObjectFromTheParentClass
的新实例 - 也就是说,新实例的所有属性都是从“父instanc”中“复制”的。
2)这两个父/子对象可以动态链接吗?即:如果父母改变,孩子会改变吗?
谢谢
答案 0 :(得分:1)
一个熟悉的习惯用法是让子类将现有方法委托给父实例:
@implementation ChildClass
@property (nonatomic, strong) ParentClass *obj;
- (void) mill
{
[obj mill];
}
- (NSInteger) count
{
return [obj count];
}
如果ParentClass具有广泛且快速变化的API,这可能是单调乏味且难以维护的。在这种情况下,您可能根本不想继承,而是从ParentClass和ChildClass中提取公共接口,并且可能让ChildClass的实例观察到对其进行初始化的对象的更改。