国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

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

2019-11-14 19:02:25
字體:
來源:轉載
供稿:網友

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;的區別


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 昌黎县| 夏津县| 房山区| 武鸣县| 高清| 新野县| 镇江市| 庆元县| 安乡县| 台江县| 漯河市| 金华市| 霞浦县| 固安县| 朝阳区| 郸城县| 大埔区| 新野县| 察哈| 太仆寺旗| 阿拉善右旗| 喀喇| 军事| 安阳市| 织金县| 安泽县| 鞍山市| 多伦县| 抚州市| 五常市| 永德县| 昆山市| 乌兰浩特市| 新昌县| 剑阁县| 阿拉善右旗| 句容市| 都昌县| 延寿县| 长海县| 泸西县|