如果您已经在主线程中,在主线程上延迟分配一段代码是否安全?如何使用GCD在主线程上延迟后安全地分配代码?
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, seconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), theBlock);
还是有更安全的方法?如果我在主队列(主线程)上执行此操作时是否必须执行任何检查?
如果您已经在主线程中,在主线程上延迟分配一段代码是否安全?如何使用GCD在主线程上延迟后安全地分配代码?
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
这样的同步功能,则必须检查。否则会导致僵局。
是的,它是安全的。还有其他方法可以在主线程上执行操作,但我不认为它们更安全。你可以使用,例如:
[[NSOperationQueue mainQueue] addOperationWithBlock: YOUR_BLOCK_HERE ];
当我不需要GCD的额外功能时,我更喜欢NSOperationQueue。这很容易。
我相信这不是“最大公约数”,而是“大中央调度”。 – Bhavin
是的。不,你可能想用weakSelf来避免保留一个过时的视图控制器等。 –