2

次のように、superclass.h で定義されたプロパティがあります。

@property (nonatomic, retain, readonly) NSArray *objects;

.m ファイルにアクセスできません。

objects私のサブクラスでは、このプロパティに書き込む必要がある場合がいくつかあります。

次の2つの解決策を試しました:

  1. サブクラスで呼び出されるオーバーライドreadwriteプロパティを宣言します。ただ、これだとスーパークラスのsetterobjectsについて[super viewDidLoad]を呼ぶとエラーになる。setObjects

  2. サブクラスで別のプロパティを宣言し、スーパークラスの配列プロパティまたはこのサブクラス プロパティcommentObjectsのいずれかを使用するフラグを含めます。objectsスーパークラスがロードするオブジェクトを使用しても問題ない場合もあれば、サブクラスがロードするオブジェクトを使用する必要がある場合もあります。これは機能しますが、非常に面倒で、同じデータに対して 2 つの異なる名前のプロパティを使用する悪い設計のように見えます。

1つのプロパティを使用するだけでこれを行う方法はありますか?

4

1 に答える 1

1

BOOL2 番目のアプローチを少し拡張できます。使用するプロパティを示すフラグを含めるのではなく、プロパティのゲッターをオーバーライドしobjectsて、スーパークラスの値、または独自の設定可能なcommentObjectsプロパティの値のいずれかを返します。

-(NSArray*)objects {
    return usecCmmentObjects ? commentObjects : [super objects];
}
于 2013-07-25T00:51:33.380 に答える