OC 單例模式

2021-07-16 21:38:43 字數 1220 閱讀 2854

設計模式(用來解決某一特定問題):單例模式

什麼時候使用單例模式?

在工程中,一些類只需要乙個例項變數,我們就可以將這些類設計成單例模式

單例模式的作用?

當乙個類a被設計成單例模式時,由類a構造出的例項物件之於其他類來說為全域性例項物件,即在每乙個類中由類a構建的例項物件 都是同乙個物件

在oc中如何將乙個類設計成單例模式:

1、在要被設計成單例模式的類的.h檔案中宣告乙個構造方法

2、實現該方法

例: 思路:乙個類只能建立乙個例項(永遠是同乙個)和乙個獲得該例項的方法;當我們呼叫這個方法時,如果乙個類的唯一例項不為空就返回這個唯一例項,若為空就建立乙個該類的例項。

1、建立全域性例項:建立工廠方法,並建立乙個全域性靜態例項

@inte***ce student : nsobject+(student*)shareinstance;

@end

//宣告乙個靜態的例項物件,只會在第一次執行

static student *st=nil;

2、實現工廠方法,然後返回乙個單一物件

+(student*)shareinstance

return st;

}

3、為了防止通過alloc/new建立新的例項,需要重寫allocwithzone方法:

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

}return st;

}

4、為了防止copy產生新的物件,需要遵循nscopying協議

-(id)copywithzone:(nszone *)zone

5、主函式驗證:分別用4種方式 建立4個物件,然後輸出4個物件對應的指標

teacher *t1=[teacher shareinstance];

teacher *t2=[[teacher alloc]init];

teacher *t3=[teacher new];

teacher *t4=[t3 copy];

nslog(@"

%p%p

%p%p

",t1,t2,t3,t4);

6、輸出結果

oc單例模式

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

OC 設計模式 單例模式

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

OC成員變數 單例模式

main.m 單例模式 created by goddog on 15 1 2.1.乙個類始終只能建立乙個例項,則這個類被稱之為單例類 2.單例類可以通過static全域性變數來實現,程式考慮定義乙個static全域性變數,該變數用於儲存已建立的singleton物件,每次程式需要獲取該例項時,程式...