Objective c 在目标c中创建一个数组,该数组可用于创建该数组的类的所有对象

Objective c 在目标c中创建一个数组,该数组可用于创建该数组的类的所有对象,objective-c,arrays,nsmutablearray,nsarray,Objective C,Arrays,Nsmutablearray,Nsarray,我想创建一个数组,在调用该类的函数(例如FillArray())时初始化该数组。函数之后,将永远不会调用FillArray() 我希望该数组在初始化后可用于该类的所有其他对象 我该怎么做呢。感谢是进步让它成为静态/共享/全局 @实现MySingleton 静态NSMutableArray*\u sharedMySingletonArray=nil +(MySingleton*)sharedMySingleton { @synchronized([MySingleton class])

我想创建一个数组,在调用该类的函数(例如FillArray())时初始化该数组。函数之后,将永远不会调用FillArray()

我希望该数组在初始化后可用于该类的所有其他对象


我该怎么做呢。感谢是进步

让它成为静态/共享/全局

@实现MySingleton 静态NSMutableArray*\u sharedMySingletonArray=nil

+(MySingleton*)sharedMySingleton
{
    @synchronized([MySingleton class])
    {
        if (!_sharedMySingletonArray)
            [[self alloc] init];

        return _sharedMySingletonArray;
    }

    return nil;
}
@end

像这样简单地声明一个静态数组

static NSMutableArray *staticArray = nil;

void FillArray() {
    if(staticArray == nil) {
        staticArray = [[NSMutableArray aloc] init];
    }
}
当你不再孤独的时候需要它!记得释放它

void FreeArray() {
    [staticArray release];
    staticArray = nil;
}

你能举一些例子,让数组成为静态的吗。我无法做到这一点,请注意,除非您使用ARC,否则这不是线程安全的;您需要进行适当的互斥(例如NSLock、@synchronize、dispatch\u sync)或使用类似dispatch\u once或pthread\u once的方法。即使使用ARC,如果初始化阵列的成本很高(或者有副作用),您也需要进行互斥。