另一个快速的:
如果我执行这样的事情:
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:]
完成? 对不起,如果这看起来像一个业余问题。 我是个业余爱好者。
答案 0 :(得分:0)
那是因为你的" performSelector:
"发生在你当前的(主)线程上。
如果您添加类似" NSLog( @"in main function");
"在那里" while
"循环,只要你的performSelector启动,就应该停止。
您需要在另一个(分离的)线程上执行performSelector,或使用块。 Some blocks can use "stop" Booleans在他们的论点中。
答案 1 :(得分: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
}
}