Iphone 如何延迟方法调用?

Iphone 如何延迟方法调用?,iphone,iphone-sdk-3.0,ios4,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]; 或 [self method1]; //wait say, 500ms then move onto the next l

我希望能够调用一个方法,然后,要么等待该方法完成它的工作,然后调用下一个方法调用,要么调用一个方法,等待一定时间,然后调用下一个方法

我该怎么做呢

例如:

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

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

使用:

如果要确保该方法完成了它所做的工作,为什么不

a) 在method1的末尾调用method2

b) 按照Deniz Mert Edincik的建议使用performSelectorOnMainThread:withObject:waitUntilDone:

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

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

将代码分成两半(例如,分成多个方法)


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

这是否与动画有关?如果是这样的话,你就错了。事实上,不,我没有尝试做动画,如果我想等第一个方法完成呢?真棒似乎在工作,唯一的问题是我使用了100毫秒的延迟。当我使用200毫秒延迟时,一切正常。有什么方法可以测量完成该方法所需的时间吗?@cgossain-有时候,计时器不会完全准确。这与CPU周期和低级别的东西有关。有关更多信息,请参阅NSTimer参考。
    ...
    [self method1];
    return;
}

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