1. 誰申請,誰釋放 適用於物件導向開發的原則
2.如果有alloc,copy,retain需要做對應的release
3.如果有copy, retain(在arc中就是strong)的屬性,需要在dealloc中進行釋放
- (void)dealloc
4.在mrc中如果要重寫屬性的setter方法,需要按照以下格式
- (void)setname:(nsstring *)name }5.
知識點補充,乙個疑惑:
給屬性設定數值的時候,使用self
.name,可以呼叫系統預設的setter方法,從而能夠保證retain是正確的!
* 什麼時候使用 _name,什麼時候使用
self.name?
# 第一次給屬性內容設定數值的時候,建議使用_name
場景:loadview,viewdidload,前提是沒有寫懶載入方法
# 在dealloc方法中,建議使用
[_name release]; //
可以看清楚平衡關係
也可以使用:
self.name = nil; //
呼叫setter方法
# 使用_name 的場景,通常是初始化,或者銷毀
6> 如果物件的成員變數在例項化時,使用的是延遲釋放方法(例如類方法)
# 需要手動retain 一次,否則一次執行迴圈結束後,該物件會被釋放掉
7> retaincount 引用計數,表示當前有多少個物件對該物件引用!
很多初學者會喜歡 log retaincount
蘋果官方建議:不推薦大家跟蹤retaincount,因為一物件在真正執行中,
可能會被某乙個框架引用,也有可能會被框架的框架引用,造成retaincount 和預期的不一樣,會造成疑惑!
iOS ARC 和 MRC 混合開發 注意事項
聯絡人 石虎暱稱 嗡嘛呢叭咪哄 arc mrc 混合開發 在專案開發中,遇到使用 mrc開發的第三方庫怎麼辦?例如 asi 1 嘗試使用 xcode 的轉換工具 失敗率比較高 2 在編譯選項中,為 mrc的程式新增 fno objc arc 標記,表明在編譯時,該檔案使用 mrc編譯 備註 1 演示...
iOS開發之oc(十一) 記憶體管理MRC
掌握內容 理解記憶體管理的原理 1.理解部分 1點選工程 build settings 通過gar關鍵字的搜尋搜出automatic re.cou.將此選項的設定改稱no 1.2.2析構函式 可以用來驗證物件是否被釋放 語法 void dealloc void setdog dog dog void...
敏捷開發的原則
一 單一職責原則 the single responsibility principal srp 就是說盡量的單一化類的功能,不要使類具有多個功能。如果類具有多個功能時,任意乙個功能的修改都需要改寫這個類,也就會影響其他的類,而這些類根本沒有使用修改的這個功能。如果單一化功能,這種情況就可以避免。例...