Objective c 在目标c中创建一个数组,该数组可用于创建该数组的类的所有对象
我想创建一个数组,在调用该类的函数(例如FillArray())时初始化该数组。函数之后,将永远不会调用FillArray() 我希望该数组在初始化后可用于该类的所有其他对象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])
我该怎么做呢。感谢是进步让它成为静态/共享/全局 @实现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,如果初始化阵列的成本很高(或者有副作用),您也需要进行互斥。