if
発言に問題がある
というオブジェクトがあり、enemy2
そのオブジェクトを実行したくないのでsetHidden = YES
、コードを使用しましたが、使用するつもりでした
if(enemy2 setHidden: YES)
{
}
if(enemy2 setHidden: NO)
{
}
しかし、それは setHidden の後に「)」を除いて言っています
if
発言に問題がある
というオブジェクトがあり、enemy2
そのオブジェクトを実行したくないのでsetHidden = YES
、コードを使用しましたが、使用するつもりでした
if(enemy2 setHidden: YES)
{
}
if(enemy2 setHidden: NO)
{
}
しかし、それは setHidden の後に「)」を除いて言っています
構文を修正しても、おそらくこれらのステートメントはどちらも実行されません。私はあなたが欲しいと思います
if ([enemy2 hidden])
{
}
else
{
}
セッターではなく、ゲッターを使用します。
if([enemy2 setHidden: YES])
{
}
if([enemy2 setHidden: NO])
{
}
if([enemy2 setHidden: YES]) { }
つまり、角括弧を含む必要があります
Objective-C では、このようにメソッドを呼び出す必要があります[anObject method]
だから、([enemy2 setHidden: YES])
代わりに(enemy2 setHidden: NO)
jrturtonが示唆したように (私のコメントも参照)、bool 値に対してテストする必要があります。
コードをテストする場合 (LLVM コンパイラを使用)
if([enemy setHidden:YES]){
}
[self setHidden:YES]
を返すため、コンパイル時エラーが発生しますvoid
。
ステートメントにはスカラー型の式が必要です ('void' は無効です)
正しいアプローチは次のようになりますが、何を達成したいかによって異なります。
if([enemy hidden]) {
}
else {
}
編集
Jonathan Grynspanレポートに基づいて、クラスのゲッターが次のように定義されているため、 ifenemy
がのサブクラスの代わりにUIView
使用する必要があります。isHidden
hidden
UIView
@property(nonatomic, getter=isHidden) BOOL hidden