OC學習篇之 單例模式

2021-08-27 19:51:57 字數 2532 閱讀 1557

在之前的一片文章中介紹了物件的拷貝相關知識:今天我們來看一下oc中的單例模式,單例模式在設計模式中用的可能是最多的一種了,而且也是最簡單的一種

實現單例模式有三個條件

1、類的構造方法是私有的

2、類提供乙個類方法用於產生物件

3、類中有乙個私有的自己物件

針對於這三個條件,oc中都是可以做到的

1、類的構造方法是私有的

我們只需要重寫allocwithzone方法,讓初始化操作只執行一次

2、類提供乙個類方法產生物件

這個可以直接定義乙個類方法

3、類中有乙個私有的自己物件

我們可以在.m檔案中定義乙個屬性即可

下面來看**:

adressbook.h

//

// adressbook.h

// 35_singleton

//// created by jiangwei on 14-10-13.

//#import //設計單利類的目的,限制這個類只能建立乙個物件

//構造方法為私有的

//儲存乙個全域性的static變數

@inte***ce adressbook : nsobject

+ (adressbook *)shareinstance;

@end

在.h檔案中提供了乙個類方法,用於產生物件的

adressbook.m

//

// adressbook.m

// 35_singleton

//// created by jiangwei on 14-10-13.

//#import "adressbook.h"

static adressbook *instance = nil;//不能讓外部訪問,同時放在靜態塊中的

@implementation adressbook

+ (adressbook *)shareinstance

return instance;

}//限制方法,類只能初始化一次

//alloc的時候呼叫

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

return instance;

}//拷貝方法

- (id)copywithzone:(nszone *)zone

//需要重寫release方法,不能讓其引用+1

- (id)retain

//需要重寫release方法,不能讓其引用-1

- (oneway void)release

- (id)autorelease

@end

我們定義了乙個static型別的物件

static adressbook *instance = nil;//不能讓外部訪問,同時放在靜態塊中的

提供乙個獲取單例項的類方法

+ (adressbook *)shareinstance

return instance;

}

重寫allocwithzone方法,讓初始化只做一次

//限制方法,類只能初始化一次

//alloc的時候呼叫

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

return instance;

}

還有其他方法也是需要重寫的

//拷貝方法

- (id)copywithzone:(nszone *)zone

//需要重寫release方法,不能讓其引用+1

- (id)retain

//需要重寫release方法,不能讓其引用-1

- (oneway void)release

- (id)autorelease

拷貝方法只能返回當前的單例項

retain和release方法不能進行引用的+1和-1操作

測試**

main.m

//

// main.m

// 35_singleton

//// created by jiangwei on 14-10-13.

//#import #import "adressbook.h"

//單利模式

int main(int argc, const char * argv)

return 0;

}

兩個指標指向的是同乙個物件

總結

這一篇文章主要介紹了oc中的單例模式,同時我們oc學習篇的系列章程也就結束了,當然這些並不代表oc中所有的內容,還有很多其他內容,我們只有後面慢慢的去使用他才會越來越了解。

iOS開發 OC篇 單例模式

回顧一下load和initialize方法,有幾點需要注意。load方法和initialize方法分析 1 load方法 1 當類被引用程序式的時候會執行這個函式 2 乙個類的load方法不用寫明 super load 父類就會收到呼叫,並且在子類之前。3 category的load也會收到呼叫,但...

oc單例模式

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

OC 單例模式

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