我想要創建一個數組,該數組在要調用該類的函數(例如FillArray())時進行初始化。函數FillArray()永遠不會被調用。在目標c中創建一個數組,該目標可用於創建數組的類的所有對象
我希望這個數組一旦被初始化就可以用於類的所有其他對象。
我該怎麼做。謝謝你提前
我想要創建一個數組,該數組在要調用該類的函數(例如FillArray())時進行初始化。函數FillArray()永遠不會被調用。在目標c中創建一個數組,該目標可用於創建數組的類的所有對象
我希望這個數組一旦被初始化就可以用於類的所有其他對象。
我該怎麼做。謝謝你提前
簡單地聲明一個這樣的靜態數組!
static NSMutableArray *staticArray = nil;
void FillArray() {
if(staticArray == nil) {
staticArray = [[NSMutableArray aloc] init];
}
}
當你沒有孤獨者需要它!記得發佈它!
void FreeArray() {
[staticArray release];
staticArray = nil;
}
使其成爲靜態/共享/全局。
@implementation MySingleton static NSMutableArray * _sharedMySingletonArray = nil;
+(MySingleton*)sharedMySingleton
{
@synchronized([MySingleton class])
{
if (!_sharedMySingletonArray)
[[self alloc] init];
return _sharedMySingletonArray;
}
return nil;
}
@end
你可以舉一些例子來製作一個靜態的數組。我無法做到這一點 – Mayank
請注意,除非您使用ARC,否則這不是線程安全的;您需要進行適當的互斥(例如NSLock,@synchronize,dispatch_sync)或使用dispatch_once或pthread_once之類的東西。即使使用ARC,如果初始化數組的開銷很大(或者有副作用),則無論如何您都需要進行互斥。 –