这条线在3秒后调用选择secondMethod:
[self performSelector:@selector(secondMethod) withObject:nil afterDelay:3.0 ];
与你期望的延迟使用它在你的第二个操作。如果您有很多代码,请将其置于其自己的方法中,并使用performSelector:
调用该方法。它不会阻止像sleep
编辑UI:如果你不想让你可以添加一个类别中的第二种方法可以使用块与performSelector:
@implementation NSObject (PerformBlockAfterDelay)
- (void)performBlock:(void (^)(void))block
afterDelay:(NSTimeInterval)delay
{
block = [block copy];
[self performSelector:@selector(fireBlockAfterDelay:)
withObject:block
afterDelay:delay];
}
- (void)fireBlockAfterDelay:(void (^)(void))block
{
block();
}
@end
或许更清洁:
void RunBlockAfterDelay(NSTimeInterval delay, void (^block)(void))
{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC*delay),
dispatch_get_current_queue(), block);
}
向人们警告这是正确的,但是如果您编码的控制器需要等待外部设备进行固定的处理时间,则它不是无意义的。 – user2161301 2015-10-02 11:55:41
如何在写入搜索栏时延迟HTTP请求?在输入时过滤结果?在请求一个过滤列表之前等待一秒钟,而不是向服务器查询用户点击的每个按键,这听起来对我来说并不是什么废话。 – 2016-07-15 17:00:50