1. 程式人生 > >OC物件記憶體管理

OC物件記憶體管理

  1. NSObject *a = [[NSObject alloc] init];這時候在堆中分配一塊記憶體,並在棧中建立變數a指標,並將在堆中分配的記憶體起始地址賦值給這個指標a;這樣棧中的指標a就指向了堆中的物件。通過a可以訪問堆中物件。
  2. ios物件在ARC下是編譯器做記憶體管理,在適當的地方插入relase程式碼,當自動引用計數減1。(編碼問題會導致無法記憶體釋放,造成記憶體洩露)
  3. 當自動引用計數減到0時候,就會呼叫該物件的dealloc方法,並沿著繼承關係一直找到NSObject物件併發送dealloc訊息。再呼叫c語言的free函式釋放記憶體物件。並把棧中的指標清空,不然會出現野指標。通過野指標訪問物件,如果這個記憶體地址沒被系統回收那麼是可以讀到值的,但是寫會出現異常。當記憶體被系統回收,通過野指標訪問讀寫記憶體會出問題。