如果您已经在主线程上,则在主线程上延迟分发代码块是否安全?
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
这样的同步函数,则必须进行检查。否则将导致死锁。