Objecitive-C中的nil

當我學習OC的時候,我老是忍不住在對比。Actionscript是如何實現,而oc又是如何實現。這不,碰到nil的時候我發現了很大的不一樣之處。作個筆記。

在as中,若是將一個對象置爲null,至關於空指針,那麼後續對該對象的操做會報錯。而在編碼中,咱們經常會判斷if(obj == nul )來判斷該對象是否存在,存在的話才能夠進行後續操做。

而在oc中,nil就至關於c、c++中的NULL指針,通常釋放對象後將對象置爲nil很是重要,這樣能夠防止引用非法指針致使程序崩潰掉。 c++

[obj release];//此時obj的引用計數爲0
[obj someMethod];//程序崩潰

[obj release];
obj = nil;
[obj someMethod];//obj此時爲nil,但不會崩潰
在objective-c中咱們只用nil來檢查程序的邏輯,而不用於判斷對象是否爲空來避免崩潰。這與c++是不一樣。objective-c在運行時會自動處理向nil對象發送消息(調用方法),不會報錯崩潰掉。
相關文章
相關標籤/搜索