2013-07-28 35 views
0

我曾經看到這樣 if (something == 0){do it}條件,但 現在我已經在iOS_BookObjC如果(零== S){}

if (nil == s) 

滿足這句話是這一樣if (s == nil),如果沒有,有什麼不同?

+0

是的他們是同一件事 – Fonix

+1

不,我已經鏈接的問題不只是關於'NULL',@PhilipKendall,並且涉及的特定常量與答案無關。 「爲什麼'if(3 == x)'?」有同樣的答案。 –

+0

我會推薦測試falsey值,如: if(!s)或if(!something) – cncool

回答

4

它們在測試時是一樣的,但如果您無意中使用=而不是==,則將零置於左側可以將您從意外分配錯誤中解救出來。

+0

是的,我已經閱讀過它... – Ilan

+1

雖然這是一個標準的llvm編譯器警告,所以沒有真正的優勢與客觀C.我們正在測試之前,我們正在修復所有的警告,對吧? :) – sapi

1

兩種形式做同樣的事情,雖然nil == s有一個非常好的好處:如果你犯了一個錯字你會得到一個編譯錯誤,並寫=代替==,因爲你不能分配給恆。這通常被稱爲「尤達符號」。

+0

這個名字來源於這個符號減少可讀性的事實。使用現代編譯器,無論如何你會得到一個警告 – Sulthan

+1

@Sulthan我同意Objective-C中的值非常低(感謝Clang)。然而,在JavaScript等更高級別的語言中,這種使用會更好,因爲您不需要依賴外部驗證程序(它很少集成到開發中默認環境下,至少IME)。 – Kitsune