我有 A 类,它是 B 类和 C 类的超类。我需要将 A 类的对象存储在 A 类中定义的“静态”NSMutablearray 中。是否可以使用 B 类中的方法修改存储在 MSMutableArray 中的数据和C级?如何创建和初始化静态数组?一个例子会更有帮助。提前致谢。
问问题
7751 次
1 回答
16
这是一种方法。
@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 回答