0

これは一般的な質問です。質問を 2 つに分けることができます。

ParentClass から継承するクラス ChildClass があります。

  • ParentClass には多くの属性とメソッドがあります。
  • ChildClass には、いくつかの新しいメソッドといくつかの新しい属性があります。

1)initFromParentClassメソッドを定義したいのですが、その署名は

       - (id) initFromParentClass:(ParentClass)anObjectFromTheParentClass

ChildClassに基づいての新しいインスタンスを作成します。anObjectFromTheParentClassつまり、新しいインスタンスのすべての属性が「親インスタンス」の属性から「コピー」されます。

2) これら 2 つの親子オブジェクトを動的にリンクできますか? つまり、親が変われば子も変わる?

ありがとうございました

4

1 に答える 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 に答える