0

在我的 iPhone 应用程序中,我有一堆代码在一个方法中运行。在方法的最后,我有几行需要延迟,所以它们只在之前的内容之后运行,这是因为正在制作动画,我需要在动画完成时运行这段代码。

我知道我可以只使用 NSTimer,但我想尝试一些更优雅或更简洁的东西。

4

3 回答 3

0

您可以用于第一个过程:

– performSelector:onThread:withObject:waitUntilDone:

这将阻塞你的线程,直到进程完成。

在此之后,您的下一条语句将开始执行。

于 2013-01-15T17:38:39.660 回答
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的块教程,应该可以帮助您入门。

于 2013-01-15T17:44:27.820 回答
0

如果即使在动画结束后您还需要延迟,您可以调用您的第二个过程:

[self performSelector:<#(SEL)#> withObject:<#(id)#> afterDelay:<#(NSTimeInterval)#>]
于 2013-01-15T18:45:26.833 回答