0

if発言に問題がある

というオブジェクトがあり、enemy2そのオブジェクトを実行したくないのでsetHidden = YES、コードを使用しましたが、使用するつもりでした

if(enemy2 setHidden: YES)
{

}
if(enemy2 setHidden: NO)
{

}

しかし、それは setHidden の後に「)」を除いて言っています

4

5 に答える 5

4

構文を修正しても、おそらくこれらのステートメントはどちらも実行されません。私はあなたが欲しいと思います

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

セッターではなく、ゲッターを使用します。

于 2012-06-20T13:15:11.240 に答える
1
if([enemy2 setHidden: YES])
{

}
if([enemy2 setHidden: NO])
{

}
于 2012-06-20T13:08:22.673 に答える
1

if([enemy2 setHidden: YES]) { } つまり、角括弧を含む必要があります

于 2012-06-20T13:07:23.173 に答える
1

Objective-C では、このようにメソッドを呼び出す必要があります[anObject method]

だから、([enemy2 setHidden: YES])代わりに(enemy2 setHidden: NO)

于 2012-06-20T13:12:14.127 に答える
1

jrturton示唆したように (私のコメントも参照)、bool 値に対してテストする必要があります。

コードをテストする場合 (LLVM コンパイラを使用)

if([enemy setHidden:YES]){

}

[self setHidden:YES]を返すため、コンパイル時エラーが発生しますvoid

ステートメントにはスカラー型の式が必要です ('void' は無効です)

正しいアプローチは次のようになりますが、何を達成したいかによって異なります。

if([enemy hidden]) {


}
else {


}

編集

Jonathan Grynspanレポートに基づいて、クラスのゲッターが次のように定義されているため、 ifenemyがのサブクラスの代わりにUIView使用する必要があります。isHiddenhiddenUIView

@property(nonatomic, getter=isHidden) BOOL hidden
于 2012-06-20T13:24:00.470 に答える