iOS 單例的寫法

2021-07-10 09:33:26 字數 1510 閱讀 8384

關於什麼是單例,ios中的單例模式是什麼,自行爬頁搜尋。這裡拋磚引玉,說說單例模式應該怎樣實現。

直接上**。

//

// singleton.h

// singletondemo

//// created by wangbo on 3/9/16.

//#import @inte***ce singleton : nsobject

+ (instancetype)shareinstance;

@end

//

// singleton.m

// singletondemo

//// created by wangbo on 3/9/16.

//#import "singleton.h"

@implementation singleton

static singleton *_singleton = nil;

+ (instancetype)shareinstance );

return _singleton;

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

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

@end

//

// main.m

// singletondemo

//// created by wangbo on 3/9/16.

//#import "singleton.h"

#import int main(int argc, const char *argv)

return 0;

}

程式輸出:

2016-03-09 19:27:31.375 singletondemo[11477:206113] 2016-03-09 19:27:31.376 singletondemo[11477:206113] 2016-03-09 19:27:31.376 singletondemo[11477:206113] program ended with exit code: 0

我們可以看到,三個物件對應記憶體中同乙個值。

說明:

1.之所以要過載allocwithzone、copywithzone方法,是因為如果不這樣做,客戶端通過這兩個方法會得到乙個新的例項,違背了我們單例模式的思想;

2.本文使用dispatch_once函式實現單例singleton的初始化,因此只會在程式執行週期中執行一次,保重了單例的單一性。同時滿足了執行緒安全的要求。

3.考慮到執行緒安全,我們同樣可以使用對self加鎖的方式來實現,@synchronized、nslock,自行爬文搜尋。

收工!~

iOS單例的完整寫法

單例模式在ios開發中是最為常用的模式之一,在應用這個模式時,單例物件的類必須保證只有乙個例項存在。許多時候整個系統只需要擁有乙個的全域性物件,這樣有利於我們協調系統整體的行為。一般情況下,許多人都是按下面的方式寫單例模式 import singleton.h implementation sing...

單例的寫法

1.import mysingleton.h static mysingleton singleton nil id shareobject synchronized self if singleton nil singleton mysingleton alloc init return sing...

iOS 三種單例模式寫法

單例模式是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例類的特殊類。通過單例模式可以保證系統中乙個類只有乙個例項而且該例項易於外界訪問,從而方便對例項個數的控制並節約系統資源。如果希望在系統中某個類的物件只能存在乙個,單例模式是最好的解決方案。一 執行緒不安全 import singl...