2015-01-15 165 views
0

的另一種方式我有是工作的罰款單噸,但我不想單身,而不是使用任何替代的最佳途徑 找到我的代碼以供參考什麼是辛格爾頓

Myclass.h

+ (instancetype)shareInformation; 

Myclass.m

+ (instancetype)shareInformation 
{ 
    static Myclass *manager; 
    static dispatch_once_t onceToken; 
    dispatch_once(&onceToken, ^{ 

     manager = [[Myclass alloc] init];  
    }); 
    return manager; 
} 

MyNextClass.m

[[Myclass shareInformation] methodofMyclass:^(NSDictionary *results, NSError *error) { 

    //my code 
}]; 

我有一個類Myclass,其中我使用一個單獨給init manager = [[Myclass alloc] init];我打電話給其他類MyNextClass但我不想這樣做這樣我的意思是我不想用單身模式我需要一些這個替代我爲什麼在這裏做

+0

你的問題不明確。你想做什麼不同? – rmaddy 2015-01-15 17:30:34

+0

我不明白你的問題。你可以重新翻譯一下或者提供更多的細節? – Scott 2015-01-15 17:30:38

+0

你想完成什麼?如果您只需要在整個應用中訪問此類的一個實例,則應該使用單例模式。 – Chris 2015-01-15 17:36:38

回答

0

我猜你想避免使用Singleton因爲它認爲是一種反模式。
解決方案是使用依賴注入容器連接應用程序並將其配置爲將對象解析爲單個實例。
我不熟悉ios開發,但颱風看起來像流行的選擇。

0

你可以使用單身或者你可以使用一個普通的實例,這取決於你。單身人士的主要好處之一是,您可以毫無困難地在任何地方獲得參考。

你總是可以創建一個類,並通過它的一個參考任何你想用它。例如,在您創建它的視圖控制器中,確保在您的以下視圖控制器中創建它的屬性,然後將相同的引用傳遞到新的視圖控制器。

這是最好使用單,如果這就是你想要什麼來完成,你只需要一個實例,雖然。

0

另一種選擇,爲「全球性」的數據,是利用AppDelegate中的。你可以在AppDelegate本身中放置簡單的屬性,或者定義一個屬性(或者顯式的「getter」方法),它返回一個指向更復雜的「全局」對象的指針。

請注意,以這種方式使用AppDelegate被許多人認爲是「糟糕的形式」,但其實並沒有那麼糟糕,除了訪問AppDelegate本身有點尷尬。 (它攪得誰相信那些情面,他們知道什麼是「關注點分離」 真的手段。)