標籤: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設計模式之單例