在我的iPhone应用程序中,我有一堆代码在单个方法中运行。在方法结束时,我有几行需要延迟,所以它们只能在之前运行,这是因为有动画正在进行我需要在动画完成时运行此代码。
我知道我可以使用NSTimer,但我想尝试一些更优雅或更清洁的东西。
答案 0 :(得分:0)
您可以使用第一个过程:
– performSelector:onThread:withObject:waitUntilDone:
这将阻止你的线程,直到完成该过程。
在此之后,您的下一个语句将开始执行。
答案 1 :(得分:0)
标准(非常方便)的iOS方式是回调块。考虑一个简单的UI动画:
[UIView animateWithDuration:1
animations:^{
myView.alpha = 1; // fade-in myView
}
completion:^(BOOL finished){
// this code gets called when the animations block above is finished
}];
您可以实现自己的方法,将完成块作为参数,并在执行结束时调用它。这是应该让你开始的Apple's block tutorial。
答案 2 :(得分:0)
如果您在动画结束后仍需要延迟,则可以使用以下命令调用第二个进程:
[self performSelector:<#(SEL)#> withObject:<#(id)#> afterDelay:<#(NSTimeInterval)#>]