iOS中建立單例的兩種方式
阿新 • • 發佈:2019-02-16
剛剛開始做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 9return _sharedUtils; 10 }
dispatch_once(&_once, ^{
});
這個多執行緒的作用看名字估計就猜的差不多了:對於某個任務執行且只執行一次。