內存管理:
因為手機硬件的內存及其有限,當一個程序占用內存過高時,系統會發出警告。為了更好的用戶體驗,ios引入了內存管理的概念。ios主要通過引用計數器實現對oc對象的內存管理,這種引用計數器通常只作用在oc對象上而非基本數據類型,因為數據類型對象一般存放在棧上,當代碼塊結束時,代碼塊所涉及的所有局部變量會彈棧清空,指向對象的指針也會被回收,而存放在堆上的oc對象雖然沒有指針指向,但仍存在與內存中,容易造成內存泄漏。
mrc:由開發人員手動retain和release操作引用計數。
arc:自動生成retain和release操作代碼,判斷原則為 沒有強指針指向的對象則會被自動釋放。
block中的內存管理,詳見http://www.lxweimin.com/p/ba825ef44d60
autoreleasepool自動釋放池
mrc下,調用autorelease方法會將對象放入自動釋放池內,當自動釋放池釋放時,會對池內所有變量做一次release操作。每個runloop都會自動產生一個自動釋放池,當現runloop休眠或者迭代結束的時候,main 釋放池會自動釋放,當runloop喚醒或初始化時,會自動產生一個新釋放池。釋放池是棧序排列的,新創建的池會放在棧頂,優先釋放。當遇到頻繁創建臨時對象時可考慮用自動釋放池避免內存泄漏。
魚人學習小計(四)
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。