2014-05-06 54 views
1

我讀了關於這個頁面上的單身人士does something need to hold a reference to a singleton objective-c object in order to preserve it through the life of an IOS app?,發現單身人士保持一個指向自己的指針,因此不需要引用來保持它並保持它活着。做整個應用程序的自定義類單身人士嗎?

但是,如果我有一個自定義類是NSObject的一個子類,我寫了一個代碼來實例化這樣的

+ (instancetype)sharedStore{ 

static CYCImageStore *sharedImageStore = nil; 

static dispatch_once_t imageLocation; 

dispatch_once(&imageLocation, ^{sharedImageStore = [[self alloc]initPriv];}); 

return sharedImageStore; 
} 

一個單獨的對象,我需要一個指針,它保持它活着?或者它是否像UIApplication類等一樣具有其他單例的相同特性。

回答

1

你需要什麼只是用它

[[SingletonClass sharedStore] CYCImageStore]; 

SingletonClass是你的單例類的名稱。

以同樣的方式,你可以創建任何你想要的方法並調用它。

+0

因此,基本上如果我在這個類中保存一個圖像,並在另一個方法中調用這個類來返回圖像,它仍然會在那裏? – user3526002

+0

yes直到您的應用程序正在運行 –

0

無論應用程序請求多少次 ,單例類都返回相同的實例。一個典型的類允許調用者根據需要創建類的多個實例,而對於單個類,每個進程只能有一個類的實例。一個 單身對象提供了對其類的資源 的全局訪問點。單身人士用於需要這種單點控制的情況下,例如提供一些通用的服務或資源的類。

在你的代碼,

dispatch_once(&imageLocation, ^{sharedImageStore = [[self alloc]initPriv];}); 

本節只執行一次。所以初始化只發生一次。由於從第二次開始它將跳過初始化部分。所以一旦存儲的數據將不會因初始化而被重置。 你不需要做任何額外的工作或打擾初始化。通過使用您的sharedStore方法訪問方法。