iOS-《編寫高質量程式碼》筆記第三章-記憶體管理
建議17:理解記憶體和Objective-C記憶體管理規則
OC 記憶體管理模式基於物件的“所有權”上。任何物件都會被一個或多個使用者引用,只要物件還有一個使用者,該物件就應該繼續存在。如果一個物件沒有使用者了,系統將自動銷燬它。
建議18:記憶體管理講究“好借好還,再借不難”
在返回一個新建立的(擁有的)物件時,應該使用autorelease而不是release來釋放所有權。
建議19:區別開alloc 、init、retain、release、和dealloc 之間的差異
OC 中沒有new和delete 兩個關鍵字,new可以作為一個函式,也就是alloc + init 。
alloc分配過程不僅進行物件的記憶體分配,而且還初始化物件的兩個非常重要屬性,即它的isa例項變數和保持數(引用計數) 。它還將所有的剩下的例項變數設定為0。但是分配完成的物件還是不可用,還需要呼叫像init這樣的初始化方法來進行物件自有的初始化,才能返回一個可用的物件。
建議20:優先使用存取方法來簡化記憶體管理
使用存取方法(getter ,setter)管理記憶體,可大大降低管理方面出現的問題。
建議21:物件銷燬或者移除一定考慮所有權的釋放
從集合中移除物件,集合要釋放對被移除物件的所有權。(自動釋放)
建議22:明智而審慎地使用dealloc
dealloc 的角色就是釋放物件佔用的記憶體並處理自己所擁有的資源,包括本身變數的釋放。
不要嘗試用dealloc管理系統資源。應用程式終止時,物件的dealloc可能不會被呼叫。因為程式的記憶體是自動清除退出,讓作業系統清理資源比呼叫所有的記憶體管理方法更有效率。
相關文章
- iOS-《編寫高質量程式碼》筆記-第一章iOS筆記
- [編寫高質量iOS程式碼的52個有效方法](七)記憶體管理(上)iOS記憶體
- [編寫高質量iOS程式碼的52個有效方法](八)記憶體管理(下)iOS記憶體
- 高質量的C程式碼.釋放記憶體 薦記憶體
- 讀書筆記:編寫高質量javascript的68個方法筆記JavaScript
- iOS-有效編寫高質量Objective-C方法-三iOSObject
- 《編寫高質量程式碼:改善Java程式的151個建議》筆記Java筆記
- 《編寫高質量程式碼--web前端開發修煉之道》筆記-CSSWeb前端筆記CSS
- 信管筆記 -- 質量管理筆記
- iOS 編寫高質量Objective-C程式碼iOSObjectC程式
- [轉]高質量JAVA程式碼編寫規範Java
- 怎樣編寫高質量的java程式碼Java
- 編寫高質量的程式碼,從命名入手
- 編寫高質量程式碼
- iOS 編寫高質量Objective-C程式碼(四)iOSObjectC程式
- iOS 編寫高質量Objective-C程式碼(一)iOSObjectC程式
- iOS 編寫高質量Objective-C程式碼(三)iOSObjectC程式
- iOS 編寫高質量Objective-C程式碼(二)iOSObjectC程式
- iOS 編寫高質量Objective-C程式碼(八)iOSObjectC程式
- iOS編寫高質量Objective-C程式碼(四)iOSObjectC程式
- iOS編寫高質量Objective-C程式碼(二)iOSObjectC程式
- iOS 編寫高質量Objective-C程式碼(五)iOSObjectC程式
- iOS 編寫高質量Objective-C程式碼(六)iOSObjectC程式
- iOS 編寫高質量Objective-C程式碼(七)iOSObjectC程式
- iOS編寫高質量Objective-C程式碼(六)iOSObjectC程式
- 如何編寫高質量的C#程式碼(一)C#
- 高階記憶體管理程式設計指南-實用的記憶管理記憶體程式設計
- Objective-C高階程式設計讀書筆記之記憶體管理Object程式設計筆記記憶體
- 如何編寫高質量和可維護的程式碼
- iOS 編寫高質量Objective-C程式碼(一)—— 簡介iOSObjectC程式
- 我們應該如何編寫高質量的前端程式碼前端
- 藉助 SublimeLinter 編寫高質量的 JS & CSS 程式碼JSCSS
- 藉助SublimeLinter編寫高質量的JavaScript & CSS程式碼JavaScriptCSS
- 編寫高質量程式碼的思考
- 記憶體管理 記憶體管理概述記憶體
- SonarQube7.6 程式碼質量管理工具安裝&使用 筆記筆記
- 《Effective JavaScript 編寫高質量JavaScript程式碼的68個有效方法》JavaScript
- MJiOS底層筆記--記憶體管理iOS筆記記憶體