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

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

oc-內(nèi)存管理 - 探路篇

2019-11-09 14:43:56
字體:
供稿:網(wǎng)友

一、過程:

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

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

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

NSObject負(fù)責(zé)內(nèi)存管理非自己生成的對象通過retain方法實(shí)現(xiàn)持有對象。

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

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

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

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

釋放方式:

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

所有權(quán)修飾符

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

_ _weak

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

_ _ unsafe_unretained

_ _autoreleasing

三、@autoreleasepool

由于main.m中的UI applicationMain永遠(yuǎn)不會return,所以main.m中的autoreleasepool永遠(yuǎn)不會進(jìn)入到釋放階段,而UIApplicationMain會自己創(chuàng)建main run loop,在Cocoa的runloop中包涵autoreleasepool。

四、對象指針的返回值

劃分 retained return value -> 調(diào)用者擁有這個(gè)返回值。 alloc / copy / initunretained return value -> 調(diào)用者不擁有這個(gè)返回值。

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

直接賦值: self.proprety = [[NSObject alloc] init]; //init的時(shí)候retainCount+1 , 賦值的時(shí)候retainCount+1,但autoreleasepool只減1
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 灌阳县| 奉节县| 大石桥市| 苏尼特右旗| 西安市| 佛冈县| 荔浦县| 嘉义县| 黔东| 静乐县| 碌曲县| 建昌县| 大厂| 黑河市| 呼和浩特市| 岳池县| 盐源县| 仁布县| 徐闻县| 呼伦贝尔市| 清丰县| 德清县| 恩施市| 红安县| 巴马| 巴彦淖尔市| 海晏县| 香港 | 赤壁市| 宣威市| 耿马| 阿城市| 新田县| 巫溪县| 台中县| 搜索| 南城县| 洱源县| 柳州市| 格尔木市| 清流县|