黑馬程式設計師 ARC與autorelease

2021-06-29 05:57:29 字數 1845 閱讀 4066

一、@property

引數設定(非

arc機制下)

1、set方法記憶體管理相關引數

assign:直接複製,一般用於非

oc型別的資料,預設為

assign

retain:

release

舊值,retain新值

copy:

release

舊值,copy新值

2、是否生產set方法

readonly:唯讀,不生產

set方法

readwrite:讀寫,生產

set方法,預設用

readwrite

3、多執行緒管理

atomic:效能低,預設

atomic

nonatomic:效能高,程式一般都用

nonatomic

4、getter與

setter設定

@property (getter = abc, setter = setabc)int num;

可以同時設定setter

與getter

,因為不衝突。在方法呼叫時,依然可以用

mun與

setnum

作為方法名。

@property引數設定時,可以同時設定多個,只要屬性不衝突就行。

二、autorelease

使用注意

1、將物件放入乙個物件池中,當自動物件池被銷毀,會對自動銷毀池中的物件呼叫

release

方法。呼叫後返回物件本身,物件的計數器值不變。只有當物件池被銷毀時,呼叫

release

方法,計數器減1。

2、autorelease

的好處。不用關心物件釋放的時間,不用關心什麼時候呼叫

release

。若物件所占用的記憶體較大時,不建議使用啊

autorelease

方法。

3、autorelease

後呼叫release

方法,會發生野指標錯誤。

autorelease

又呼叫autorelease

方法,也會發生野指標錯誤。

4、自動釋放池都是以棧結垢存在,先進後出模式。當物件呼叫乙個

autorelease

方法時,會將這個物件放到棧頂的釋放池。

5、系統包含的方法裡面沒有呼叫

alloc

、new

、copy

,則不需呼叫

autorelease

,因為他們本身就包含了

autorelease

方法,比如

nsstring。

三、arc機制

1、只要沒有強指標指向物件,物件就會被釋放

2、不允許呼叫

release

、retain

、retaincount 3、

@property

的引數

strong:成員變數是強指標,適合

oc物件

weak:成員變數是弱指標,適合

oc物件

assign:適用於非

oc物件

預設情況下,所有物件指標都是強指標。

4、可以重寫

delloc

,但是不能呼叫

delloc。

5、用法

@property(nonatomic, strong) nsstring *name;

@property(nunatomic, assign) int age;

_weak person *p = [[person alloc]init]; //將指標

p強轉為若指標型別

ios黑馬程式設計師 ARC

強指標 預設情況下所有的指標都 是強指標型 strong 在arc當中 乙個物件只要沒有強指標引用,那麼它就會被系統 弱指標 弱指標不影響物件的 在arc當中,所有的跟手動管理記憶體 相關的方法都不能呼叫比如說 dealloc不能重寫父類 了 不能 super dealloc weak定義乙個弱指標...

黑馬程式設計師

asp.net android ios開發 net培訓 期待與您交流!map hashtable 底層是雜湊表資料結構,不可以存入null鍵和null值。該執行緒是同步的,jdk1.0出現,效率低。hashmap 底層是雜湊表資料結構,允許使用null鍵和null值。該集合執行緒是不同步的,將has...

黑馬程式設計師

1.了解反射 反射 就是通過class檔案物件,去使用該檔案中的成員變數,構造方法,成員方法。person p new person p.使用 要想這樣使用,首先你必須得到class檔案物件,其實也就是得到class類的物件。2.反射中的類 class類 成員變數 field類 構造方法 const...