2010-10-30 65 views
0

我希望能够调用的方法,然后,要么等待的方法来完成做的事情,然后调用next方法调用,或者调用一个方法,等待一定的时间,然后调用一个方法。如何延迟方法调用?

上我会怎么做,有什么想法?

例子:

[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]; 
+1

这是否是偶然做的所有动画?如果是这样,你会以错误的方式去做。 – jer 2010-10-30 21:10:58

+0

其实不,我不是想动画 – cgossain 2010-10-30 21:14:11

回答

1
+0

,如果我想等第一种方法完成,那么怎么样? – cgossain 2010-10-30 21:13:50

+0

performSelectorOnMainThread:withObject:waitUntilDone: – 2010-10-30 21:14:55

+0

真棒似乎是工作,唯一的问题是,我使用的是延时100ms。当我使用200ms延迟时,一切正常。有没有一种方法可以测量完成该方法所需的时间? – cgossain 2010-10-30 22:10:05

1

如果你想确保方法已完成做它,为什么不要么

a)调用method2 at方法1的端部

b)中去与performSelectorOnMainThread:withObject:waitUntilDone:由德尼兹莫特Edincik

c)中所建议的发送NSNotification在方法1的端部,以触发方法2(你可以添加一个观察者在方法1该通知和方法2,再删除,如果方法1是在其他地方也叫你不想方法2触发每次)

你不应该工作与afterDelay,依靠任何耽误你指定的......

0

破坏你的代码中的一半(例如成多种方法)。

... 
    [self method1]; 
    return; 
} 

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

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