延迟执行

// 延迟执行不要用sleep,坏处:卡住当前线程
    [NSThread sleepForTimeInterval:(NSTimeInterval)];

 // 一旦定制好延迟任务后,不会卡主当前线程
[self performSelector:<#(SEL)#> withObject:<#(id)#> afterDelay:<#(NSTimeInterval)#>];

//n秒后回到主线程执行block中的代码

 dispatch_queue_t queue = dispatch_get_main_queue();

//n秒后自动开启新线程 执行block中的代码
    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);


    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(n * NSEC_PER_SEC)), queue, ^{
         // n秒后需要执行的任务


    });

原文地址:https://www.cnblogs.com/hl-iOS/p/4830989.html