2013-12-09 50 views
0

我可能會使用一個BOOL我會做這樣的事情時要瘋了這裏,但前面:奇數行爲

BOOL myBool 

if (myBool) { 
    [email protected]"My Bool is YES"; 
} 

即我會假設,如果myBool相當於說,如果myBool是是。

在iOS7下雖然我看到日誌語句觸發器,即使myBool的值永遠不會被明確設置。如果它設置爲NO或YES,則代碼的行爲與預期相同。

在iOS7下有什麼改變嗎?

編輯

我想補充的是瘋狂的這一刻被引起的,但事實上,我已經從其他地方NSUserDefaults的boolForKey方法初始化布爾值將,如果沒有價值發現該鍵將返回NO。

+0

你忘了一些括號和分號。並且不要爲標題添加標籤。 – DrummerB

+0

如果你註銷myBool的值,你會看到它有一個垃圾值。任何非零值被認爲是真實的。當您使用布爾沒有初始化的Xcode顯示警告 「變量‘myBool’在這裏使用時是未初始化」 http://stackoverflow.com/questions/2919745/default-value-of-bool – Tim

+2

:看到這個問題。初始化bool變量,然後使用if條件。 – suhit

回答

7

如果myBool是從來沒有明確地設定,它是一個局部變量,那麼它的價值是不確定的。因此,它可以評估爲YES或NO。

你沒有得到一些編譯器警告?

+0

沒有編譯器警告。這是有道理的 - 有時候是肯定的,有時候不會。我以前猜測,我總是以某種方式初始化布爾的價值。 – GuybrushThreepwood

+2

@Ohnomycoco'Project' - '建設Settings' - '蘋果LLVM 5.0 - 警告 - 所有languages' - '未初始化Variables'。 – Sulthan

+0

設置爲YES - 很奇怪。 – GuybrushThreepwood

0

BOOL myBool將不會被初始化爲任意值,在你的代碼,以便它可以是任何隨機值YES或NO ..

初始化您myBool一些價值第一..