iOS開發多線程篇—單例模式(ARC),iosarc

來源:互聯網
上載者:User

iOS開發多線程篇—單例模式(ARC),iosarc

iOS開發多線程篇—單例模式(ARC)

一、簡單說明:

設計模式:多年軟體開發,總結出來的一套經驗、方法和工具

java中有23種設計模式,在ios中最常用的是單例模式和代理模式。

二、單例模式說明

(1)單例模式的作用 :可以保證在程式運行過程,一個類只有一個執行個體,而且該執行個體易於供外界訪問,從而方便地控制了執行個體個數,並節約系統資源。

(2)單例模式的使用場合:在整個應用程式中,共用一份資源(這份資源只需要建立初始化1次),應該讓這個類建立出來的對象永遠只有一個。

(3)單例模式在ARC\MRC環境下的寫法有所不同,需要編寫2套不同的代碼

可以用宏判斷是否為ARC環境



(4)在ARC中,單例模式的實現思路

在.m中保留一個全域的static的執行個體   static id _instance;

1)重寫allocWithZone:方法,在這裡建立唯一的執行個體(注意安全執行緒)



2)提供1個類方法讓外界訪問唯一的執行個體



3)實現copyWithZone:方法



(5)非ARC中(MRC),單例模式的實現(比ARC多了幾個步驟)

實現記憶體管理方法

- (id)retain { return self; }

- (NSUInteger)retainCount { return 1; }

- (oneway void)release {}

- (id)autorelease { return self; }

三、單例模式(ARC)

1.說明

重寫allocWithzone:方法,控制記憶體配置。因為alloc內部會調用該方法,每次調用allocWithzone:方法,系統都會建立一塊新的記憶體空間。

alloc方法中:永遠只分配一次記憶體

init方法中:保證所有的MP3資料都只載入一次。

2.程式碼範例

建立一個音頻工具類,繼承子NSObject類。

在該類中實現以下代碼,觀察:



在主控制器中,建立工具類對象:

 

列印結果:

說明:在alloc內部會調用更底層的方法allocWithZone方法分配記憶體空間,上面的代碼建立了四個不同的對象。

3.單例模式:設計思路

(1)永遠只分配一塊記憶體來建立對象

(2)提供一個類方法,返回內部唯一的一個變數

(3)最好保證init方法也只初始化一次

程式碼範例:

建立一個音頻工具類,繼承子NSObject類。

在該類中按照設計思路實現以下代碼:

YYAudioTool.m檔案




YYAudioTool.h檔案



主控制器中建立對象:

 

觀察列印結果:

  

說明:整個程式中只建立一個對象執行個體。

4.static補充:

注意:static id instace=nil;和static id instace;instace=nil;的區別

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.