iOS 中空現象(nil & Nil & NULL & NSNull)

是否能編譯通過?


iOS 中的空現象主要包括 nil / Nil / NULL / NSNull,具體定義以及描述可通過鏈接點擊查看。在實際開發中,對于 Nil 除非特意設置這樣的值,否則不會出現,我是從沒使用過。

一、nil

在 OC 中 nil 是安全的,這是 iOS 程序員記憶在骨子里的鐵律。所以每次在寫代碼的時候,只要是一個對象為 nil 的時候就放心了。但是要清楚的一點是,這里的安全僅僅是針對給一個 nil 指針發送消息是的安全。如果說使用 nil 訪問了不該訪問地方,該 crash 還是得要 crash。比如通過 nil 直接訪問成員變量:

crash

在實際開發中這種情況往往會發生在 block 中,比如在 block 中做對 self 做了 weak 處理,然后通過 weakSelf 訪問其成員屬性,這樣當 weakSelf = nil 的時候, crash 就會發生。
除此之外,比較常見的與 nil 相關的 crash 就是往一個集合 對象中添加一個 nil。
欣賞一張圖:

image.png

二、NULL

在開發中,一般給一個 block 設置成空, 習慣性的就會使用這個。只要不亂設置,一般不會出現問題。

三、NSNull

這個就比較厲害一點了, 比 NSProxy 還要 光桿司令。偷偷的瞧瞧:

image.png

有什么用呢?這東西感覺就是拿來 占位置 的,比如在一個集合中的某個位置不詳空著,但是也不想放實際的東西,那么就可以使用他了。
一般還會出現在后臺接口返回為空的情況,所以一定要處理好這種情況,一般字典轉模型的工具都會幫忙轉成 nil 的。

NSNull 能接收什么樣的消息

四、說點是什么吧

魯迅說:
1、別人說你不行,沒有必要千方百計的去證明什么。
2、夢里有時終須有、夢里無時莫強求,與 無關。
3、有的時候、努力也需要一個平臺,不是所有人都那么厲害。有時候努力尋高人,勝過努力做好一件事。
4、只要別人看不起你,你吸一口氣,別人都會說你怎么這么奇怪,盡然還吸氣。

魯迅說
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容