是否有一种模式来指示函数的块被同步或异步调用,例如:
- (void)processImage:(UIImage *)image onComplete:(void (^)(NSError *__error))onComplete;
是一个函数,它将同步处理图像,然后onComplete(error)
在完成时调用,但是:
- (void)downloadResourceIDs:(NSArray *)imageIDs onComplete:(void (^)(NSError *__error))onComplete;
是一个函数,它将异步下载数组中指定的资源,并onComplete(error)
在下载完所有内容后调用,但是这不是很明显这是一个异步回调。例如,我可以使用dispatch_semaphore
indownloadResourceIDs:onComplete:
来防止回调发生,直到所有内容都下载完毕。
或者,所有函数都应该是同步的,即使函数本身包含异步元素(如异步下载内容)并人为强制同步?