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