在Objective-C中制作异步方法的同步版本的最佳方法是什么(对于iOS,如果重要的话)?
假设您有一个使用这两种方法的课程:
- (void) asyncDoSomething; // Starts an asynchronous task. Can't be changed.
- (void) onFinishDoSomething; // Called when the task is finished
如何实现在任务完成之前不会返回的同步doSomething
?
答案 0 :(得分:1)
好的,所以你可以声明一个全局布尔值,告诉你继续或等待,在你调用- (void)asyncDoSomething;
方法之前,你将BOOL wait
设置为YES
,然后在方法之后做
while (wait) {
[NSThread sleepForTimeInterval:1];
}
等待您的回复,并在异步回调- (void)onFinishDoSomething;
中将布尔值设置为NO
;
这样,您的方法仍称为异步,但后面的代码在响应之前不会执行。它会等待它是同步的。
答案 1 :(得分:0)
进入asyncDoSomething实现并删除NSThread / NSOperation /回调代码。