是否有指示功能的塊被同步或異步地調用一個圖案,例如:模式用於指定一個函數的塊是異步的VS同步
- (void)processImage:(UIImage *)image onComplete:(void (^)(NSError *__error))onComplete;
是將同步處理圖像的功能和然後調用onComplete(error)
完成時,但:
- (void)downloadResourceIDs:(NSArray *)imageIDs onComplete:(void (^)(NSError *__error))onComplete;
是將異步下載的數組指定的資源,並呼籲onComplete(error)
一切下載後的功能,但這不是立即明顯ŧ這是一個異步回調。例如,我可以使用dispatch_semaphore
中的downloadResourceIDs:onComplete:
來防止發生回調,直到下載完成爲止。
或者應該所有函數都是同步的,即使函數本身包含異步元素(如異步下載東西)並且人工強制同步?
如果一個操作是同步執行的,爲什麼要使用一個塊呢?任何在代碼塊中的代碼都可以在方法調用後寫入(並且該方法可以返回一個'BOOL'並帶一個'NSError **'來指示錯誤)? – 2013-04-23 01:19:48
@一二三:在塊最後要運行的情況下,這可能是正確的。在這種情況下,因爲它被稱爲「onComplete」。但是,如果該塊應該在中間運行呢?例如,'enumerateObjectsUsingBlock:'是同步的。 – newacct 2013-04-23 09:10:37
@newacct啊,所以也許這個塊的命名約定是'onComplete','onSuccess','onFailure'暗示異步。 – Shizam 2013-04-23 16:16:20