200
iPhone_iPad_Mac_apple
Objecitive-C中的nil
當我學習OC的時候,我總是忍不住在對比。Actionscript是如何實現,而oc又是如何實現。這不,碰到nil的時候我發現了很大的不同之處。做個筆記。
在as中,如果將一個對象置為null,相當於空指針,那麼後續對該對象的操作會報錯。而在編碼中,我們常常會判斷if(obj == nul )來判斷該對象是否存在,存在的話才可以進行後續操作。
而在oc中,nil就相當於c、c++中的NULL指針,一般釋放對象後將對象置為nil非常重要,這樣可以防止引用非法指針導致程序崩潰掉。
1
|
[obj
release]; //此時obj的引用計數為0
|
2
|
[obj
someMethod]; //程序崩潰
|
6
|
[obj
someMethod]; //obj此時為nil,但不會崩潰
|
在objective-c中我們隻用nil來檢查程序的邏輯,而不用於判斷對象是否為空來避免崩潰。這與c++是不同。objective-c在運行時會自動處理向nil對象發送消息(調用方法),不會報錯崩潰掉。
最後更新:2017-04-03 21:30:11