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

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

oc-內存管理 - 探路篇

2019-11-09 15:50:23
字體:
來源:轉載
供稿:網友

一、過程:

生成對象 -> alloc持有對象 -> retain釋放對象 -> release廢棄對象:所有引用都釋放 -> dealloc

二、MRC:需要手動釋放自己持有的對象

[參考資料]:http://www.open-open.com/lib/view/open1460693431491.html

NSObject負責內存管理非自己生成的對象通過retain方法實現持有對象。

id obj = [NSArray array]; // 取得非自己生成并持有的對象 [obj retain];

調用autorelease后,對象不會被立即釋放,而是注冊到autoreleasepool中,知道pool結束,對象才被釋放。

??無法釋放非自己持有的對象,但可持有非自己生成的對象。

三、ARC:自動釋放自己持有的對象

釋放方式:

1、賦其他值 2、超出作用域

所有權修飾符

_ _strong id類型和對象類型默認在超出變量作用域后被釋放

_ _weak

解決循環引用問題(易發生互相強引用)當引用計數為0時,自動賦值nil必須是oc對象(assign可以非oc對象)weak被賦以一個非自己生成的對象,weak并不會立即釋放,而是注冊到AutoreleasePool中,延長生命周期。不持有對象??與assign的區別 assign是指針賦值,不對引用計數操作,使用之后如果沒有置為nil,可能產生野指針。而weak一旦不適用,自動賦值nil。

_ _ unsafe_unretained

_ _autoreleasing

三、@autoreleasepool

由于main.m中的UI applicationMain永遠不會return,所以main.m中的autoreleasepool永遠不會進入到釋放階段,而UIApplicationMain會自己創建main run loop,在Cocoa的runloop中包涵autoreleasepool。

四、對象指針的返回值

劃分 retained return value -> 調用者擁有這個返回值。 alloc / copy / initunretained return value -> 調用者不擁有這個返回值。

五、對self.PRoprety直接賦值和間接賦值的差別

直接賦值: self.proprety = [[NSObject alloc] init]; //init的時候retainCount+1 , 賦值的時候retainCount+1,但autoreleasepool只減1
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 彭阳县| 肇源县| 普定县| 麦盖提县| 高阳县| 延川县| 西乌珠穆沁旗| 永州市| 永昌县| 安新县| 青河县| 温泉县| 剑阁县| 荆州市| 阿拉善盟| 玉环县| 宝鸡市| 玛纳斯县| 武山县| 玉屏| 美姑县| 沛县| 堆龙德庆县| 堆龙德庆县| 周宁县| 临沧市| 房山区| 长兴县| 自治县| 育儿| 彰武县| 嘉兴市| 防城港市| 昌平区| 尼玛县| 英德市| 无锡市| 同德县| 平阴县| 府谷县| 淄博市|