0

私はいくつかの読書をしていて、少し混乱しています。説明させてください。

私の状況:

ClassA.h にはいくつかの配列があり、ClassA.m にはこれらの配列を使用するいくつかのメソッドがあります。また、独自の配列と、これらの配列を使用する独自のメソッドを持つ ClassB、ClassC、ClassD... もあります。今までは、コードをコピーして各クラスに貼り付けただけでした。

私がしたいこと:

いくつか読んだところ、すべてのメソッドが格納されている親クラスを作成し、クラスでこれらのメソッドを使用する必要があることがわかりました。

//parentClass.m
@implementation parentClass

+ (void)commonMethod:(id)sender{

...

}

@end


//classA.m

@implementation classA

- (void)someMethod{
    [parentsClass commonMethod];
}

@end


//classB.m

@implementation classB

- (void)someMethod{
    [parentClass commonMethod];
}

@end

問題:

そこで、メソッドをparentClass.mに移動し、配列をparentClass.hに移動しました。私の問題は、ビルドして実行しようとすると、のようなエラーが発生することですInstance variable <someArray> accessed in class method。どうすればよいかわかりません。@interfaceこの問題を回避する唯一の方法は、ファイル内で配列を宣言すること.hですか?


編集:親クラスでメソッドを使用するためにこの手法を使用したい理由は、次のようにメソッドを呼び出したいからです:

[commonClass commonMethod];

毎回親クラスのインスタンスを宣言する必要はありません。

ありがとう!

4

1 に答える 1

0

継承に関係なく、配列などのインスタンス変数にアクセスする場合は、インスタンスメソッド (クラスメソッドではない) を使用する必要があります。インスタンス メソッドは-メソッド シグネチャの前の (マイナス) で示されますが、クラス メソッドは+.

于 2012-07-17T22:49:59.767 に答える