OC 設計模式 單例模式

2022-05-03 15:06:20 字數 1311 閱讀 7249

單例模式的作用:可以保證在程式執行過程,乙個類只有乙個例項,而且這個例項易於供外界訪問。永遠只分配一次記憶體給這個類。由於在呼叫alloc方法的時候,都會呼叫allocwithzone,所以要重寫這個方法,保證只分配一次記憶體。dispatch_once這個方法可以保證只呼叫一次,並且會自動加鎖,執行緒安全。

在6.0之前的版本中修改工程為非arc

xcode6.3下設定,修改工程在非arc下:

定義巨集來實現單例的通用性。在拼接巨集的時候不能使用注釋。最後面不能加/.

//

## : 兩個#號連線字串和引數

#define singleton_h(name) + (instancetype)shared##name;

#define singleton_m(name) \

static

id_instance; \

+ (id)allocwithzone:(struct _nszone *)zone \

); \

return

_instance; \

} \ \

+(instancetype)shared##name \

); \

return

_instance; \

} \ \

- (oneway void

)release \

\ \- (id

)autorelease \

\ \- (id

)retain \

\ \-(nsuinteger)retaincount \

\ \+ (id)copywithzone:(struct _nszone *)zone \

呼叫舉例:

- (id)init

if (self = [super init]) {

static dispatch_once_t oncetoken;

dispatch_once(&oncetoken, ^{

// 載入資源

return self;

singleton_m(nettool)

重寫init方法。呼叫單例的巨集。

如何實現arc與非arc下的單例巨集,相容?(新增條件編譯進行判斷)

oc單例模式

1 單例模式概念 1 什麼是單例模式 singleton 單例模式的意圖是是的類的物件成為系統中唯一的例項,提供乙個訪問點,供客戶類 共享資源。2 什麼情況下使用單例?1 類只能有乙個例項,而且必須從乙個為人熟知的訪問點對其進行訪問,比如工廠方法。2 這個唯一的例項只能通過子類化進行擴充套件,而且擴...

OC 單例模式

設計模式 用來解決某一特定問題 單例模式 什麼時候使用單例模式?在工程中,一些類只需要乙個例項變數,我們就可以將這些類設計成單例模式 單例模式的作用?當乙個類a被設計成單例模式時,由類a構造出的例項物件之於其他類來說為全域性例項物件,即在每乙個類中由類a構建的例項物件 都是同乙個物件 在oc中如何將...

設計模式 單例模式

單例模式 singleton pattern 是乙個比較簡單的模式,其定義如下 ensure a class has only one instance,and provide a golbal point of acess to it.確保某乙個類只有乙個例項,而且自行例項化並且向整個系統提供這個...