手動創建單例


所謂的單例就是:一個應用程序(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 }

 

关注微信公众号

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com