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, ^{ });
這個多線程的作用看名字估計就猜的差不多了:對於某個任務執行且只執行一次。

歡迎大家提出建議和意見,大家一起學習,一起進步。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM