剛剛開始做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, ^{ });
這個多線程的作用看名字估計就猜的差不多了:對於某個任務執行且只執行一次。
歡迎大家提出建議和意見,大家一起學習,一起進步。。
