2012-07-02 137 views
1

我的應用程序中出現隨機崩潰,直到我將其縮小到特定方法。在該方法中,我期望NSString作爲參數。這種NSString有時可能是零,在這種情況下該方法結束並且沒有損害。(null)和<null>有什麼區別?

當我通過NSLog(@"%@", myString)運行我的方法的參數,我發現,我得到的其中之一:

  1. 實際的NSString的內容
  2. (空)
  3. <空>

前兩個是我的方法預計和處理。第三個,<null>,崩潰我的應用程序與-[NSNull length]: unrecognized selector sent to instance 0x1b2ace8

我已經通過檢查nilisKindOfClass找到解決問題的方式,但我的問題是是什麼(空)和<空>之間的區別?

+0

[nil,NULL和\ [NSNULL nil \]之間的區別是什麼?](http://stackoverflow.com/questions/6814427/what-are-the-differences-between-nil-ull -and-nsnull-nil) – duskwuff

+1

@duskwuff:請注意,這裏的問題和答案都不能解決兩個描述字符串'(null)'和''。 –

+0

我編輯了接受的答案,以包含關於這兩個值如何串行的註釋。 :) – duskwuff

回答

5

(null)是當您使用格式說明符%@nil值時NSLog()打印的字符串。 <null>是將description發送給NSNull單身人士(您通過[NSNull null]訪問)的結果。

NSNull被用作Cocoa集合中的「no object」佔位符(NSArrayNSDictionary),因爲它們不能包含nil

這兩個描述字符串混淆相似,有人可能會爭辯說,NSNull應該有一個反對它的錯誤,以使其更加清晰。

+0

啊,我明白了。感謝您解決這個問題!那麼我必須在我的應用程序中搜索那個NSNull的起源。對於我的生活,我一直試圖在過去的幾個小時無濟於事。 – Julian

+1

解析JSON似乎是導致此問題的最常見任務 - 構建包含缺失數據的Cocoa集合需要使用「NSNull」。 –

+0

而且你是對的一次。我發現了一個來自遠程JSON對象的字典中的罪魁禍首。謝謝! – Julian

相關問題