general information
we take advantage of the documented deallocation timeline (wwdc 2011, session 322, 36:22).
1. -release to zero
* object is now deallocating and will die.
* new __weak references are not allowed, and will get nil.
* [self dealloc] is called
2. subclass -dealloc
* bottom-most subclass -dealloc is called
* non-arc code manually releases ivars
* walk the super-class chain calling -dealloc
3. nsobject -dealloc
* simply calls the objc runtime object_dispose()
4. object_dispose()
* call destructors for c++ ivars
* call -release for arc ivars
* erase associated references
* erase __weak references
* call free()
1. 呼叫 -release :引用計數變為零
* 物件正在被銷毀,生命週期即將結束.
* 不能再有新的 __weak 弱引用, 否則將指向 nil.
* 呼叫 [self dealloc]
2. 父類 呼叫 -dealloc
* 繼承關係中最底層的父類 在呼叫 -dealloc
* 如果是 mrc ** 則會手動釋放例項變數們(ivars)
* 繼承關係中每一層的父類 都在呼叫 -dealloc
3. nsobject 調 -dealloc
* 只做一件事:呼叫 objective-c runtime 中的 object_dispose() 方法
4. 呼叫 object_dispose()
* 為 c++ 的例項變數們(ivars)呼叫 destructors
* 為 arc 狀態下的 例項變數們(ivars) 呼叫 -release
* 解除所有使用 runtime associate方法關聯的物件
* 解除所有 __weak 引用
* 呼叫 free()
OC物件記憶體管理
objective c物件記憶體管理 1,管理範圍 任何繼承了nsobject的物件,基本資料型別 int,char,float,double,struct,enum等 是不需要管理記憶體的。2,引用計數器 每個oc物件都有自己的引用計數器,是乙個整數,表示 物件被引用的次數 既有多少人正在使用這個...
OC物件記憶體管理
nsobject a nsobject alloc init 這時候在堆中分配一塊記憶體,並在棧中建立變數a指標,並將在堆中分配的記憶體起始位址賦值給這個指標a 這樣棧中的指標a就指向了堆中的物件。通過a可以訪問堆中物件。ios物件在arc下是編譯器做記憶體管理,在適當的地方插入relase 當自動...
OC記憶體管理 zombie物件
當我們對於記憶體進行手動管理的時候,會出現兩種錯誤 一種是野指標錯誤,一種則為記憶體洩露.這兩點也是我們去管理記憶體時最終要解決的問題.記憶體洩漏是指 不在使用的物件,一直保留在記憶體中未被銷毀,一直占有著記憶體,耗費記憶體資源直至程式結束.野指標則是指 當乙個指標指向乙個物件時,此物件已經被系統 ...