iOS 單例模式

2022-06-14 16:42:10 字數 1412 閱讀 6680

單例模式的作用

可以保證在程式執行過程,乙個類只有乙個例項,而且該例項易於供外界訪問

從而方便地控制了例項個數,並節約系統資源

單例模式的優缺點

優點:單例模式可以保證系統中乙個類只有乙個例項而且該例項易於外界訪問,從而方便對例項個數的控制並節約系統資源。

如果希望在系統中某個類的物件只能存在乙個,單例模式是最好的解決方案。

單例模式因為類控制了例項化過程,所以類可以更加靈活修改例項化過程。

缺點:單例物件一旦建立,物件指標是儲存在靜態區的,單例物件在堆中分配的記憶體空間,會在應用程式終止後才會被釋放。

單例類無法繼承,因此很難進行類的擴充套件。

單例不適用於變化的物件,如果同一型別的物件總是要在不同的用例場景發生變化,單例就會引起資料的錯誤,不能儲存彼此的狀態。

注意:我們在使用單例類之前,一定要考慮好單例類是否適合和類以後的擴充套件性,避免盲目濫用單例

arc中單例實現步驟

1 在類的內部提供乙個static修飾的全域性變數

2 提供乙個類方法,方便外界訪問

3 重寫+allocwithzone方法,保證永遠都只為單例物件分配一次記憶體空間

4 嚴謹起見,重寫-copywithzone方法和-mutablecopywithzone方法

arc中單例**實現

#import "tools.h"

@implementation tools

// 建立靜態物件 防止外部訪問

static tools *_instance;

+(instancetype)allocwithzone:(struct _nszone *)zone

// return _instance;

// }

// 也可以使用一次性**

static dispatch_once_t oncetoken;

dispatch_once(&oncetoken, ^

});return _instance;

}// 為了使例項易於外界訪問 我們一般提供乙個類方法

// 類方法命名規範 share類名|default類名|類名

+(instancetype)sharetools

// 為了嚴謹,也要重寫copywithzone 和 mutablecopywithzone

-(id)copywithzone:(nszone *)zone

-(id)mutablecopywithzone:(nszone *)zone

**:

IOS 單例模式

單例模式顧名思義就是只有乙個例項,它確保乙個類只有乙個例項,並且自行例項化並向整個系統提供這個例項。它經常用來做應用程式級別的共享資源控制。這個模式使用頻率非常高,通過乙個單例類,可以實現在不同視窗之間傳遞資料。在objective c中要實現乙個單例類,至少需要做以下四個步驟 1 為單例物件實現乙...

iOS 單例模式

最近在ios開發中,需要用到單例模式,於是自己動手寫了乙個,它看起來是這樣的 1 id sharedinstance return sharedinstance 後來發現許多書上的做法都使用到了bool變數作為標值位,它看起來是這樣的 2 id sharedinstance return share...

iOS 單例模式

在objective c中要實現乙個單例類,至少需要做以下四個步驟 1 為單例物件實現乙個靜態例項,並初始化,然後設定成nil,2 實現乙個例項構造方法檢查上面宣告的靜態例項是否為nil,如果是則新建並返回乙個本類的例項,3 重寫allocwithzone方法,用來保證其他人直接使用alloc和in...