0

这是一个普遍的问题。我可以将我的问题分为两个:

我有一个继承自 ParentClass 的 Class ChildClass。

  • ParentClass 有很多属性和方法。
  • ChildClass 有一些新方法和一些新属性。

1)我想定义一个initFromParentClass方法,其签名将是

       - (id) initFromParentClass:(ParentClass)anObjectFromTheParentClass

这将创建一个新的实例ChildClass,基于anObjectFromTheParentClass——也就是说,新实例的所有属性都是从“父实例”的属性“复制”的。

2)这两个父/子对象可以动态链接吗?即:如果父母改变,孩子改变?

谢谢

4

1 回答 1

1

一个熟悉的习惯用法是让子类将现有方法委托给父类的实例:

 @implementation ChildClass
 @property (nonatomic, strong) ParentClass *obj;
 - (void) mill
 {
      [obj mill];
 }

 - (NSInteger) count
 {
       return [obj count];
 }

如果 ParentClass 具有广泛且快速变化的 API,这可能会很乏味且难以维护。在这种情况下,您可能根本不想继承,而是希望从 ParentClass 和 ChildClass 中提取一个公共接口,并可能让 ChildClass 的实例观察初始化它们的对象的变化。

于 2013-03-21T17:39:50.643 回答