如果您已经在主线程上,则在主线程上延迟分发代码块是否安全?

dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, seconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), theBlock);

还是有更安全的方法?执行此操作时是否必须已在主队列(主线程)上进行任何检查?

最佳答案

如果块以异步方式排队,通常不必检查是否已经在主线程上:which dispatch_after does:

该函数等待直到指定的时间,然后异步将块添加到指定的队列。

但是,如果使用的是dispatch_sync这样的同步函数,则必须进行检查。否则将导致死锁。

10-08 07:45