0

別の簡単なもの:

次のようなことを実行すると:

runningAnimation = YES;
[self performSelector:@selector(animationsComplete) withObject:nil afterDelay:0.1[;

// Return to main function
-(void) mainFunction
{
while (runningAnimation)
{
continue;
}
}

// And, animationsComplete looks like this:
-(void) animationsComplete
{
runningAnimation = NO;
}

プログラムは while ループから抜け出せないようです。これがなぜなのか誰か教えてもらえますか?

別の注意として、このタイプの「何かの実行が完了するのをコードで待機する」が、私がやろうとしていた意味で実際に機能しない場合、同じことを行う別の方法はありますか? の呼び出しを待っている間に関数を一時停止するには

[self performSelector:withObject:afterDelay:]

完了するには?素人質問のようでしたら申し訳ありません。私はアマチュアです。

4

2 に答える 2

0
WHILE (ANIMATIONCOMPLETE != 1) {
... Do work ...
... When work is done, like using if code... ...
IF (SomeBoolean // That means work done == (0 for false, continue, 1 for true, break)) {
BREAK;
}
ELSE {
CONTINUE
}
}
于 2013-02-04T00:46:38.427 に答える
0

これperformSelector:は、現在の (メイン) スレッドで " " が発生しているためです。

NSLog( @"in main function");その " " ループ内に " "のような行を追加するwhileと、performSelector が起動するとすぐに停止するはずです。

別の (デタッチされた) スレッドで performSelector を実行するか、ブロックを使用する必要があります。一部のブロックでは、引数に「停止」ブール値を使用できます。

于 2013-02-04T00:43:40.527 に答える