0
我想構建一個所有類都可以訪問的共享對象。 我希望在這個對象將是NSMutableArray
。Singleton對象中的NSMutableArray
這是我如何調用這個對象
+(id)sharedManager{
@synchronized(self) {
if (sharedManager == nil){
sharedManager = [[self alloc] init];
array = [[NSMutableArray alloc] init];
}
}
return sharedManager;
}
,這是我如何定義的NSMutableArray:
@property (nonatomic,retain) NSMutableArray *array;
問題是,之後我在創建這個NSMutableArray中sharedManager方法,每次我嘗試訪問數組都等於Nil。
使用GCD,不需要'@ synchronized'塊來保護只應該出現一次的動作。取而代之的是調用['dispatch_once()'](http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man3/dispatch_once.3.html)。它更乾淨,更快。 –
請參閱'你的Objective-C單例是什麼樣的?' http://stackoverflow.com/questions/145154/what-does-your-objective-c-singleton-look-like –
'array'聲明在哪裏?他們這樣做的方式必須聲明爲靜態,並且不能從屬性訪問。您可以使屬性爲'readonly'並編寫自己的'getArray'方法,而不是使用'@ synthesize',然而,使它可以從屬性訪問。 –