是否能編譯通過?
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、只要別人看不起你,你吸一口氣,別人都會說你怎么這么奇怪,盡然還吸氣。
魯迅說