iPhone ...暂停操作之间的当前线程(非阻塞)

时间:2012-01-13 18:50:03

标签: iphone objective-c uikit

我有一个函数可以选择UITableView上的一行,然后触发didSelectRowAtIndexPath来模拟已点击的行。这一切都发生得非常快,很难看出发生了什么,我想在这些行动之间人为地停顿一下,以便更加赏心悦目。

我使用以下代码使用NSTimer实现了此功能,但它的分辨率只有1秒。我理想的是要暂停300毫秒左右。我怎样才能尽可能简单地实现?

[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]];

1 个答案:

答案 0 :(得分:1)

我不确定我同意直接调用didSelectRowAtIndexPath。我建议将你在那里做的任何事情转移到一个单独的方法(比如selectionResponse:)并直接调用它。

完成此操作后,您可以使用 performSelector:withObject:afterDelay: 来调用selectionResponse:方法,将afterDelay:参数设置为您想要的任何值。< / p>

performSelector:withObject:afterDelay上的文档链接为here

请注意在您的dealloc中使用+ cancelPreviousPerformRequestsWithTarget:selector:object:(来自同一文档)也是个好主意,如果您的用户选择退出视图,则取消待处理的执行请求控制器在调用选择器之前的延迟时间内。这样可以防止崩溃。