クラス B とクラス C の両方のスーパー クラスであるクラス A があります。クラス A で定義された「静的」NSMutablearray にクラス A のオブジェクトを格納する必要があります。クラス B のメソッドを使用して MSMutableArray に格納されたデータを変更することは可能ですか?クラスC?静的配列を作成して初期化する方法は? 例はより役立つでしょう。前もって感謝します。
7751 次
1 に答える
16
ここにそれを行う1つの方法があります。
@interface ClassA : NSObject
{
}
-(NSMutableArray*) myStaticArray;
@end
@implementation ClassA
-(NSMutableArray*) myStaticArray
{
static NSMutableArray* theArray = nil;
if (theArray == nil)
{
theArray = [[NSMutableArray alloc] init];
}
return theArray;
}
@end
これは、真のシングルトンの代わりに私がよく使用するパターンです。ClassA とそのサブクラスのオブジェクトは、次のように使用できます。
[[self myStaticArray] addObject: foo];
考慮できるバリエーションがあります。たとえば、メソッドをクラス メソッドにすることができます。マルチスレッド環境でメソッドをスレッドセーフにすることもできます。例えば
-(NSMutableArray*) myStaticArray
{
static NSMutableArray* theArray = nil;
@synchronized([ClassA class])
{
if (theArray == nil)
{
theArray = [[NSMutableArray alloc] init];
}
}
return theArray;
}
于 2010-10-06T13:00:42.283 に答える