iOS中nil和release的區別

2021-07-10 10:20:53 字數 478 閱讀 9773

首先解釋一下nil和release的原理:

nil:把指標置為nil,就是把這個指標的儲存值置為空,此時我們切斷了指標與記憶體中物件的聯絡,但是系統並不會**物件占用的

記憶體release:通知記憶體釋放這個物件

如果沒有release就直接nil,那麼雖然不會出錯,卻等於自己製造記憶體洩漏了,因為nil之後release就已經不起作用了。相反,如果在使用介面物件時只僅僅release沒有設定self.myoutlet = 

nil,那麼程式可能也不會報錯,但卻會十分不穩定、不健壯,很容易發生崩潰現象。因為此時的指標是乙個野指標,乙個介面物件在release之後,給它所分配等記憶體就已經被釋放了,如果釋放之後系統再用到這個物件,那麼程式就會crash。如果釋放之後把它的指標置為空,則即便後面的程式用到該物件,也不會崩潰。

正確用法:

if (files)

IOS開發中nil與release

nil和release的作用 nil就是把乙個物件的指標置為空,只是切斷了指標與記憶體中物件的聯絡 而release才是真正通知記憶體釋放這個物件。所以nil並沒有釋放記憶體,只有release才回真正釋放記憶體。二者使用的先後順序 如果沒有release就直接nil,那麼雖然不會出錯,卻等於自己製...

iOS開發中nil和release的用法

先簡單解釋一下 nil 和 release 的作用 nil 就是把乙個物件的指標置為空,只是切斷了指標與記憶體中物件的聯絡 而 release 才是真正通知記憶體釋放這個物件。所以 nil 並沒有釋放記憶體,只有 release 才回真正釋放記憶體。再分析一下二者使用的先後順序 如果沒有 relea...

IOS 5 SDK中的release問題

ios5 引入了arc automicreferencecounting 機制,即自動 記憶體,新增了 strong,weak編譯指令。因此在使用 xcode4.2.x之後的版本 建立專案後,我們再使用 release,則編譯器則會編譯錯誤,以下是解決方法 方案 1 在建立專案的時候確保選項 aut...