是否有一种模式可以指示函数的 block 是同步调用还是异步调用,例如:
- (void)processImage:(UIImage *)image onComplete:(void (^)(NSError *__error))onComplete;
是一个函数,它将同步处理图像,然后在完成后调用onComplete(error)
,但是:
- (void)downloadResourceIDs:(NSArray *)imageIDs onComplete:(void (^)(NSError *__error))onComplete;
是一个函数,它将异步下载数组中指定的资源,并在下载完所有内容后调用 onComplete(error)
,但并不能立即明显看出这是一个异步回调。例如,我可以在 downloadResourceIDs:onComplete:
中使用 dispatch_semaphore
来防止回调发生,直到下载完所有内容。
或者,即使函数本身包含异步元素(例如异步下载内容)并人为地强制同步,所有函数都应该同步吗?
最佳答案
我建议完成 block 足以传达异步调用。
就我的钱而言,第一个界面是非常错误的。同步调用不需要完成 block ,也不应该在界面中出现。
关于ios - 指定函数 block 是异步与同步的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16159037/