7

我有 A 类,它是 B 类和 C 类的超类。我需要将 A 类的对象存储在 A 类中定义的“静态”NSMutablearray 中。是否可以使用 B 类中的方法修改存储在 MSMutableArray 中的数据和C级?如何创建和初始化静态数组?一个例子会更有帮助。提前致谢。

4

1 回答 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 回答