日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2016 - 2 - 20 ARC知识总结(二 autorelease概念及实现)

發布時間:2025/3/15 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2016 - 2 - 20 ARC知识总结(二 autorelease概念及实现) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先祝自己生日快樂~23咯~

?

一 ?autorelease的概念

? autorelease會像C語言的自動變量那樣來對待對象實例。當超出作用域(相當于變量作用域)時,對象的實例release實力方法被調用。

? 另外,同C語言的自動變量不同的是,編程人員可以自己設置變量的作用域,即通過autoreleasepool來實現 。

? 調用對象的autorelease方法,其實就是將對象就近放入一個NSAutoreleasePool中,該對象的生存周期相當于C語言變量的作用域。對于所有調用了autorelease方法的對象,當自動釋放池被銷毀時,都將調用release方法。

? 一個典型的應用就是NSRunloop中。當observe監聽到Runloop進入時,會創建自動釋放池,當Runloop進入休眠之前會銷毀自動釋放池并重新創建一個新的自動釋放池。在Runloop退出時,也會銷毀自動釋放池通過這種方法,就可以避免出現內存不足的現象。

? ?另外一個就是在cocoa框架中的很多類方法也會返回autorelease的對象,比如+array。

?

二 autorelease的實現

? 通過GNUstep學習:

? 在調用autorelease方法時,內部其實是調用了當前所使用的autoreleasepool對象的實例方法

? [pool addObject:obj];

? 而該方法是實質就是向內部對象數組中增加一個對象。

? [array addObject];

? 而銷毀自動釋放池也就是通過forin循環找到每一個數組的objc,并讓其調用release方法。

??

??

轉載于:https://www.cnblogs.com/BJTUzhengli/p/5202572.html

總結

以上是生活随笔為你收集整理的2016 - 2 - 20 ARC知识总结(二 autorelease概念及实现)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。