如何延迟方法调用?

时间:2010-10-30 21:08:53

标签: iphone iphone-sdk-3.0 ios4

我想能够调用一个方法,然后等待方法完成它的事情,然后调用下一个方法调用,或者调用一个方法,等待一段时间,然后调用下一个方法

有关我将如何做的任何想法?

示例:

[self method1];
//wait for method1 to finish whatever it's doing then move onto the next line
[self method2];

OR

[self method1];
//wait say, 500ms then move onto the next line
[self method2];

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

如果你想确保方法已经完成了它的工作,为什么不能

a)在method1

结束时调用method2

b)使用performSelectorOnMainThread:withObject:waitUntilDone:根据Deniz Mert Edincik的建议

c)在method1的末尾发送NSNotification以触发method2(您可以在method1中为该通知添加一个观察者,并在method2中再次删除它,如果在其他地方也调用了method1,并且您不希望每次都触发method2)

您不应该使用afterDelay,依赖于您指定的任何延迟......

答案 2 :(得分:0)

将代码分成两半(例如分成多种方法)。

    ...
    [self method1];
    return;
}

- (void) secondHalf {
    [self method2];
    ...

要等待method1完成,退出/退出/从代码的第一部分返回到运行循环。有其他东西开始你的方法的后半部分(通知,委托,计时器等)。在实例变量中保存所有必需的局部变量或其他状态。