1. 程式人生 > >iOS中建立單例的兩種方式

iOS中建立單例的兩種方式

剛剛開始做iOS開發的時候,不知道怎麼建立單例,在網上搜的也大多數都不太全,所以總結了一下建立單例的兩種方式

首先在.h檔案中宣告類方法

1 +(instancetype)sharedUtils;

然後在.m檔案中實現它,實現的方法有兩種

第一種,在建立一個物件時先判斷在程式中有沒有建立過這個物件

複製程式碼
1 static PublicUtils *DefaultManager = nil;
2 
3 +(instancetype)sharedUtils
4 {
5     if (!DefaultManager)
6         DefaultManager = [[self allocWithZone:NULL] init];
7 8 return DefaultManager; 9 }
複製程式碼

第二種,直接利用系統提供的多執行緒技術dispatch_once

複製程式碼
 1 +(instancetype)sharedUtils
 2 {
 3     static PublicUtils* _sharedUtils = nil;
 4     static dispatch_once_t _once;
 5     dispatch_once(&_once, ^{
 6         _sharedUtils = [[self alloc] init];
 7     });
 8     
 9
return _sharedUtils; 10 }
複製程式碼
dispatch_once(&_once, ^{
});
這個多執行緒的作用看名字估計就猜的差不多了:對於某個任務執行且只執行一次。