iOS 單例模式詳解

weixin_33924312發表於2017-11-16

關於單例模式的使用,系統中有很多單面模式使用的例子 如:

[UIApplication sharedApplication]

[NSUserDefaults standardUserDefaults]

[NSNotificationCenter defaultCenter]

.......

本文將講解

1,如何建立及使用單例類

新建一個工程

建立繼承與NSObject檔案


3104940-ab2919fc1a7ccc84.png

在.h 中宣告單例物件


3104940-5c93ed67068b6b97.png

.m中


3104940-e8c5a089826ca328.png

這是最初的建立方法,但是這麼建立會出現過資料混亂,爭奪資源的情況(多執行緒的出現,使得在極端條件下,單例也可能返回了不同的物件。如在單例初始化完成前,多個程式同時訪問單例,那麼這些程式可能都獲得了不同的單例物件。)

為了避免這種情況我們要加入以下程式碼


3104940-7ae0e1f0099fdbaa.png

此時的單例類大致已經建立好了 

我們在 AppDelegate 


3104940-7b428bc1a7ee50a2.png

然後在ViewController


3104940-c4d94be503494d4e.png


3104940-b8f920366a6a0ffc.png

此時一切OK了嗎?並沒有,單例,單例 就是保證其唯一性

此時的單例類的子類是可以繼承的。

那麼就要限制子類來繼承它

2,如何防止子類繼承


3104940-f256cbe79e855114.png

此時單例類建立單例物件並不唯一,如


3104940-e44ddc2d4a550561.png

3,保證建立例項物件只能出現一個 

這時我們要重寫單例類的init方法

3104940-0589fffb95f26057.png

這時我們的單例類就完成啦!

相關文章