2012-06-20 120 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

是的,你是对的...我可以添加它作为一个编辑。谢谢。 –