閱讀200 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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];//程序崩潰
3  
4 [obj release];
5 obj = nil;
6 [obj someMethod];//obj此時為nil,但不會崩潰
在objective-c中我們隻用nil來檢查程序的邏輯,而不用於判斷對象是否為空來避免崩潰。這與c++是不同。objective-c在運行時會自動處理向nil對象發送消息(調用方法),不會報錯崩潰掉。

最後更新:2017-04-03 21:30:11

  上一篇:go Mongo數據庫 安裝
  下一篇:go 政府數十萬設備為何擋不住小黑客