iOS設計模式之單例

來源:互聯網
上載者:User

標籤:style   blog   http   color   io   os   ar   使用   sp   

iOS 單例

1.什麼是單例?

   是一個類在系統中只有一個執行個體對象。通過全域的一個入口對這個執行個體對象進行訪問。

2.應用情境?  

  用於只希望一個類只有一個執行個體,而不運行一個類還有兩個以上的執行個體。

    A:iOS SDK 應用到單例模式的類:

    UIApplication 的 shareApplication 統一管理  

   NSUserDefaults 的standardUserDefaults統一系統管理使用者設定檔、  

   NSFileManager的defaultManager統一負責物理檔案的管理,  

   NSNoficationCenter中defaultCenter負責全域的訊息分發。  

  B:定製情境:主旨管理員、下載管理、傳遞Data;

3.如何?與使用?

 ARC + GCD 實現

xx.h

1 + (ARCSingleton *)sharedInstance;

xx.m

 1 + (ARCSingleton *) sharedInstance 2 { 3     // 1 4     static  ARCSingleton *sharedInstance = nil ; 5     // 2 6     static  dispatch_once_t onceToken;  // 鎖 7     // 3 8     dispatch_once (&onceToken, ^ {     // 最多調用一次 9         sharedInstance = [[self  alloc] init];10     });11     return  sharedInstance;12 }13 14 // 當第一次使用這個單例時,會調用這個init方法。15 - (id)init16 {17     self = [super init];18 19     if (self) {20         // 通常在這裡做一些相關的初始化任務21     }22 23     return self;24 }


•1.聲明一個靜態變數去儲存類的執行個體,確保它在類中的全域可用性

•2.聲明一個靜態變數dispatch_once_t ,它確保初始化器代碼只執行一次

•3.使用Grand Central Dispatch(GCD)執行初始化的block.這正是單例模式的關鍵:一旦類已經被初始化,初始化器永遠不會再被調用。

4.單例工廠  

  管理項目中大量的單例  

  Factory 方法模式的實質是“定義一個建立對象的介面,但讓實現這個介面的類來決定執行個體化哪個類。Factory 方法讓類的執行個體化延遲到子類中進行。”

5.模組管理系統

   統一管理

---------------------------------------------

參考

1.iOS設計模式反思之單例模式的進化 http://blog.jobbole.com/56439/

2.iOS設計模式(02):單例模式 http://beyondvincent.com/blog/2013/05/09/20/

iOS設計模式之單例

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.