国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

IOS中的單例設計模式

2019-11-14 19:21:02
字體:
來源:轉載
供稿:網友

  單例設計模式是IOS開發中一種很重要很常用的一種設計模式。它的設計原理是無論請求多少次,始終返回一個實例,也就是一個類只有一個實例。下面是蘋果官方文檔中關于單例模式的圖片:

 

  如圖所示,左邊的圖是默認的多例模式,只要發送請求去創建對象,就會得到一個新的對象;而右側的圖是單例模式,發送多個請求創建對象,但是最后返回的始終是同一個。

  因為創建單例類的實例是在確保沒有其他實例的情況下才創建的,并且在程序中使用的過程中始終是同一個實例,因此單例類可以作為提供一個全局訪問資源的類,比如NSUserDefaults,我們可以通過它存儲數據,它里面的數據就是全局的,無論在哪個類里面操作都是一樣的。此外,一個單例類還可以防止調用者復制、保留或釋放實例。因此,在開發的工程中可以根據需要來創建不同的單例類。

  單例的創建分Non-ARC(非ARC)和ARC+GCD,后者現在用的比較廣泛,它保證了線程的安全,滿足了靜態分析器的要求,還兼容了ARC,代碼如下:

+(AccountManager *)sharedManager{    static AccountManager *sharedAccountManagerInstance = nil;    static dispatch_once_t PRedicate;    dispatch_once(&predicate, ^{        sharedAccountManagerInstance = [[self alloc] init];    });    return sharedAccountManagerInstance;}

  代碼分析:

  通過這個類方法,可以得到當前類的單例對象。

  在方法中先聲明了一個實例,并初始化為nil,前面的static關鍵字可以保證只執行一次為nil的操作。dispatch_once_t是多線程中的,保證只執行一次。dispatch_once這個函數用于檢查該代碼塊是否已經被調用過,通過它不僅可以保證塊里面初始化的代碼僅被運行一次,還能保證線程的安全。

  單例的使用非常簡單,可以通過上面的類方法來創建任何你想要的單例類,只需要把AccountManager修改為你想要創建類的名稱,然后通過下面代碼來創建實例即可:

AccountManager *manager = [AccountManager sharedManager];

 

作者:杰瑞教育
出處:http://m.survivalescaperooms.com/jerehedu/ 
本文版權歸煙臺杰瑞教育科技有限公司和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 兰州市| 藁城市| 张家港市| 左权县| 织金县| 肥城市| 泸溪县| 云梦县| 肃宁县| 揭西县| 辽宁省| 邯郸市| 武胜县| 厦门市| 万盛区| 体育| 伊宁县| 内丘县| 留坝县| 湟源县| 楚雄市| 宣汉县| 繁峙县| 科尔| 外汇| 乐昌市| 岳普湖县| 衢州市| 会东县| 乌拉特后旗| 随州市| 广汉市| 乌兰县| 江源县| 北京市| 永善县| 武平县| 神农架林区| 禹城市| 云林县| 张家港市|