国产探花免费观看_亚洲丰满少妇自慰呻吟_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
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 泊头市| 邓州市| 吐鲁番市| 乡城县| 克什克腾旗| 乌拉特后旗| 威海市| 隆林| 南皮县| 东安县| 随州市| 平南县| 宾川县| 革吉县| 阿图什市| 家居| 安乡县| 平和县| 开平市| 鹤壁市| 文化| 巫溪县| 涞源县| 城口县| 浮山县| 邵东县| 凤庆县| 资讯 | 望都县| 图们市| 文化| 阿克苏市| 乐安县| 高雄县| 南昌市| 阿城市| 黄梅县| 四会市| 汉中市| 原平市| 定南县|