先簡單解釋一下 nil 和 release 的作用: nil 就是把乙個物件的指標置為空,只是切斷了指標與記憶體中物件的聯絡;而 release 才是真正通知記憶體釋放這個物件。所以 nil 並沒有釋放記憶體,只有 release 才回真正釋放記憶體。
再分析一下二者使用的先後順序:如果沒有 release 就直接 nil ,那麼雖然不會出錯,卻等於自己製造記憶體洩漏了,因為 nil 之後 release 就已經不起作用了。 相反,如果在使用介面物件時只僅僅 release 沒有設定 self.myoutlet =nil ,那麼程式可能也不會報錯,但卻會十分不穩定、不健壯,很容易發生崩潰現象。因為乙個介面物件在 release 之後,給它所分配等記憶體就已經被釋放了,如果釋放之後系統再用到這個物件,那麼程式就會 crash 。如果釋放之後把它的指標置為空,則即便後面的程式用到該物件,也不會崩潰。
所以在使用 nil 和 release 的時候一定要慎重哦!
IOS開發中nil與release
nil和release的作用 nil就是把乙個物件的指標置為空,只是切斷了指標與記憶體中物件的聯絡 而release才是真正通知記憶體釋放這個物件。所以nil並沒有釋放記憶體,只有release才回真正釋放記憶體。二者使用的先後順序 如果沒有release就直接nil,那麼雖然不會出錯,卻等於自己製...
iOS中nil和release的區別
首先解釋一下nil和release的原理 nil 把指標置為nil,就是把這個指標的儲存值置為空,此時我們切斷了指標與記憶體中物件的聯絡,但是系統並不會 物件占用的 記憶體release 通知記憶體釋放這個物件 如果沒有release就直接nil,那麼雖然不會出錯,卻等於自己製造記憶體洩漏了,因為n...
Delphi中的Free和Nil之理解
在delphi中釋放物件資源時一般用obj.free obj為乙個例項名 不過程delphi中還有乙個freeandnil 物件名 函式,那麼用哪個好呢?free和nil的本質又都是什麼呢?obj.free 將obj所指向的物件銷毀。obj nil 將obj指標置空。如果將上面的一句放在後面,則fr...