所謂的單例就是:一個應用程式(app)只有一個實例化對象,這個對象就是單例,一般用於音樂播放器和工具類 在這裡教大家如何手動創建單例,一種是利用互斥鎖的方式,另一種是利用dispatch的一次性執行. 1//通過互斥鎖創建單例 2 +(instancetype)sharedNetWorkTools
所謂的單例就是:一個應用程式(app)只有一個實例化對象,這個對象就是單例,一般用於音樂播放器和工具類
在這裡教大家如何手動創建單例,一種是利用互斥鎖的方式,另一種是利用dispatch的一次性執行.
1//通過互斥鎖創建單例 2 +(instancetype)sharedNetWorkTools 3 { 4 //static修飾 5 static NetworkTools *tools = nil; 6 //判斷實例化對象是否存在 7 //互斥鎖 8 @synchronized(self) { 9 if (tools == nil) { 10 tools = [NetworkTools new]; 11 } 12 } 13 return tools; 14 }
15 //一次性執行創建單例 16 +(instancetype)sharedNetWorkToolsOnce 17 { 18 //static修飾 19 static NetworkTools *tools = nil; 20 21 //一次性執行 線程安全 22 static dispatch_once_t onceToken; 23 dispatch_once(&onceToken, ^{ 24 if (!tools) { 25 tools = [[NetworkTools alloc]init]; 26 } 27 }); 28 return tools; 29 30 }