如果您已經在主線程中,在主線程上延遲分配一段代碼是否安全?如何使用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來避免保留一個過時的視圖控制器等。 –