在延迟不使用NSThread或sleep()之后执行方法 - 还有其他选择吗?

时间:2011-07-12 14:06:11

标签: iphone objective-c ios ipad

iOS4中是否有一种方法可以在延迟后使用NSThread之外的其他内容调用方法或使用sleep()阻止UI?

6 个答案:

答案 0 :(得分:29)

    double delayInSeconds = 2.0;
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
        // code to be executed on main thread.If you want to run in another thread, create other queue
    });

答案 1 :(得分:9)

- (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay

NSObject会为你做这件事。

此外,您可以创建NSTimer并让它在给定的时间后对某个目标和选择器执行回调。

答案 2 :(得分:3)

您可以使用NSTimer。 (例如timerWithTimeInterval:target:selector:userInfo:repeats

答案 3 :(得分:3)

[self performSelector:@selector(methodName) withObject:nil afterDelay:2.0];

答案 4 :(得分:1)

[NSTimer scheduledTimerWithTimeInterval:1.0 target:self 
         selector:@selector(aMethod:) userInfo:nil repeats:NO];

- (void) aMethod:(NSTimer *) aTimer {
  //task to do after the delay.
}

答案 5 :(得分:0)

您可以通过以下方式轻松完成:

[self performSelector:@selector(methodName) withObject:nil afterDelay:5];