2010-11-22 176 views
3

在objective-c中最後的結果是!variablevariable==nil一樣也是我想我在某處讀到iVars被初始化爲「無」(即o),但是我很難過似乎找不到我現在發現它的地方。如果我正確的是這個初始化無聲的一部分iVar或者是否鏈接到其他的東西像@property?做「!」和「無」給出相同的結果?

即做這些評估一樣...

if(!myObject) ... 

if(myObject == nil) ... 

乾杯加里。

編輯:希望更清晰。

回答

3

你的問題主題和問題,身體似乎會問不同的東西,所以......

要回答這個問題主題:沒有,!nil不在都一樣。 !是返回其操作數的邏輯否定(即!0回報1!與別的返回0),而nil是0

宏來回答這個問題本身就是一個運營商:是的,!foofoo == nil對對象變量給出相同的結果。是的,實例變量初始化爲0.所以是靜態變量和全局變量。

1

!是C邏輯運算符,這意味着不(如& &裝置和||裝置)。

nil是表達單位化對象指針的方式。

應用於指針,每當指針爲NULLnil時,表達式的值爲TRUE。

最後,if(!myObject)if(myObject==nil)具有相同的行爲。

+1

對不起,我得到的是!myObject(給出TRUE或FALSE)和myObject == nil(給出TRUE或FALSE)? – fuzzygoat 2010-11-22 20:23:19

1

在objective-c中,!是一個布爾運算符,它返回布爾值或表達式結果的對立面。在下面的例子中,myObj真正將它的指針值作爲布爾值,零值或非零值進行計算。由於myObj是一個非零指針,因此它的計算結果爲true。 !myObj將返回相反的結果,在這種情況下它將返回false。

id myObj = nil; 
int x = 0; 
if (myObj) 
    x++; 
+0

這不是因爲「myObj是一個有效的指針」,它的計算結果爲true。這是因爲它是一個非零指針。 – warrenm 2010-11-22 20:42:56

+0

這就是我的意思,但你是正確的,我沒有輸入我的意思。我會更新我的答案,謝謝。 – slycrel 2010-11-22 20:49:52

相關問題