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

那是因为你的“ performSelector:”发生在你当前的(主)线程上。

NSLog( @"in main function");如果您在该“ ”循环中添加类似“”的行while,则一旦您的 performSelector 启动,它应该停止。

您需要在另一个(分离的)线程上执行 performSelector,或使用块。某些块可以在其参数中使用“停止”布尔值。

于 2013-02-04T00:43:40.527 回答
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 回答