我問這對Objective-C的,因爲我用它在那裏,但它可能適用於所有其他語言:一個Singleton作爲另一個類的屬性VS調用它的每一個方法
-is它壞有一個單一的Obj-C屬性的參考?
- 在每種方法中調用共享實例會更好嗎?
更精確:我有一個單獨的類,我可以使用[MySingleton sharedInstance];
我需要另一個類,單像50倍的值MySecondClass
所以我創建了一個對象 - 屬性調用
@property (nonatomic, strong) MySingleton *mySingletonProperty;
懶洋洋地在MySecondClass
致電
if(!self.mySingletonProperty)
{
self.mySingletonProperty = [MySingleton sharedInstance];
}
一次初始化屬性我的一個朋友告訴我,這將是一個壞主意,最好不要使用單例來實例化一個屬性。正確的方法是在MySecondClass
的每種方法中調用[MySingleton sharedInstance];
並將其分配給局部變量。
這是正確的嗎?爲什麼?線程安全不是問題。
(如果它是使用一般這裏一個單一個壞主意,請不要討論 - 感謝:-)
單身人士是一個壞主意(但有時是一個必要的邪惡)開始。如果你可以用一些中心對象的屬性替換它,這通常是一個更好的主意。至於使它成爲一堆對象(都指向同一個單例實例)的屬性,這樣做並沒有太多好處,但是,如果它簡化了實際的編碼,我看不到它會帶來任何危害可能會造成混亂。如果你這樣做,請評論屬性。 –