2012-06-20 117 views
0

我在與一個if聲明的問題問題與if語句

我有一個對象稱爲enemy2,我不希望對象運行,所以我已經使用setHidden = YES我正要使用的代碼

if(enemy2 setHidden: YES) 
{ 

} 
if(enemy2 setHidden: NO) 
{ 

} 

但其表示,setHidden後的除外 ')'

+1

你想達到什麼目的?也許你需要測試視圖是否隱藏,然後爲屬性設置一個新的隱藏值? –

+0

我同意Flex。我不確定你的代碼是如何設置的,但是我沒有預料到這會很好地發揮出來...... – FreeAsInBeer

+0

@NSAutoReleasePool - 你的編輯完全無效化了這個問題。如果您想更正問題中的代碼,請添加答案。 – jrturton

回答

1
if([enemy2 setHidden: YES]) 
{ 

} 
if([enemy2 setHidden: NO]) 
{ 

} 
+0

以及在這種情況下將執行哪些代碼? if語句有什麼意義? – jrturton

+0

這個答案沒有道理;假設'setHidden:'是一個標準的setter方法,它返回(void),因此不能在'if'語句中使用。 – bbum

1

應該爲if([enemy2 setHidden: YES]) { } 即inclue方括號

1

在Objective-C,你必須調用方法,這樣[anObject method]

所以,(enemy2 setHidden: NO)([enemy2 setHidden: YES])代替

4

即使你更正語法,無論這些語句可能會執行。我想你想

if ([enemy2 hidden]) 
{ 
} 
else 
{ 
} 

使用getter,而不是setter。

+0

+ 1,使用LLVM編譯器以前的解決方案不起作用... –

+2

可能應該是'isHidden'。'BOOL' getters通常以「is」,「has」等開頭。 –

+0

@JonathanGrynspan好抓!我更正了我的答案... –

1

由於jrturton建議(也見我的評論)你需要測試一個布爾值。

如果我測試的代碼(與LLVM編譯器)

if([enemy setHidden:YES]){ 

} 

我收到一個編譯時間錯誤,因爲[self setHidden:YES]返回一個void

語句需要標量類型的表達式(「無效」無效)

正確的做法可能是下面的,但它取決於你想要達到什麼樣的事情。

if([enemy hidden]) { 


} 
else { 


} 

編輯

基於喬納森Grynspan報告,如果enemy是因爲在UIView類吸氣劑被定義爲UIView一個子類,你應該使用isHidden而不是hidden

@property(nonatomic, getter=isHidden) BOOL hidden 
+1

好點,我很困惑setters和作業(=) – jrturton

+1

isHidden是正確的,假設enemy2是一個UIView子類。否則,我們不知道它是什麼。 – jrturton

+0

是的,你是對的...我可以添加它作爲一個編輯。謝謝。 –