單例的寫法

2022-08-29 08:27:12 字數 1175 閱讀 9634

1.

#import "mysingleton.h"

static mysingleton *_singleton = nil;

+ (id)shareobject

@synchronized(self){

if (_singleton == nil) {

_singleton = [[mysingleton alloc] init];

return _singleton;

@end

@synchronized 的作用是建立乙個互斥鎖,保證此時沒有其它執行緒對self物件進行修改。這個是objective-c的乙個鎖定令牌,防止self物件在同一時間內被其它執行緒訪問,起到執行緒的保護作用。 一般在公用變數的時候使用,如單例模式或者操作類的static變數中使用。

2.#import "mysingleton.h"

@implementation mysingleton

+ (id)shareobject

static mysingleton *_singleton = nil;

static dispatch_once_t oncetoken;

dispatch_once(&oncetoken, ^{

_singleton = [[mysingleton alloc] init];

return _singleton;

@end

void dispatch_once( dispatch_once_t *predicate, dispatch_block_t block);
該函式接收乙個dispatch_once用於檢查該**塊是否已經被排程的謂詞(是乙個長整型,實際上作為bool使用)。它還接收乙個希望在應用的生命週期內僅被排程一次的**塊,對於本例就用於shared例項的例項化。

dispatch_once不僅意味著**僅會被執行一次,而且還是執行緒安全的,這就意味著你不需要使用諸如@synchronized之類的來防止使用多個執行緒或者佇列時不同步的問題。

該方法有很多優勢: 

1 執行緒安全

2 很好滿足靜態分析器要求

3 和自動引用計數(arc)相容 

4 僅需要少量**

iOS 單例的寫法

關於什麼是單例,ios中的單例模式是什麼,自行爬頁搜尋。這裡拋磚引玉,說說單例模式應該怎樣實現。直接上 singleton.h singletondemo created by wangbo on 3 9 16.import inte ce singleton nsobject instancety...

swift 單例的寫法

oc 中單例的使用 instancetype sharedmanager return instance swift 中單例的使用 static var instance networktools?static var token dispatch once t 0 在 swift 中類變數不能是儲...

單例模式寫法

單例模式是最常用到的設計模式之一,熟悉設計模式的朋友對單例模式都不會陌生。一般介紹單例模式的書籍都會提到餓漢式和懶漢式這兩種實現方式。但是除了這兩種方式,本文還會介紹其他幾種實現單例的方式,讓我們來一起看看吧。單例模式是一種常用的軟體設計模式,其定義是單例物件的類只能允許乙個例項存在。許多時候整個系...