【发布时间】:2017-11-13 03:34:50
【问题描述】:
我的情况是:
- 我有用户
- 每个用户都有一些可以通过用户对象获取的历史数据
我想做的是:
- 最多 2 个用户必须同时获取他们的历史数据(这就是我要使用 NSOperationQueue 的原因)
- 我需要在任何用户完成获取其历史数据时收到通知
- 我需要在每个用户完成获取他们的历史数据时收到通知
我要问的是:
- 我无法通过下面的代码实现我想要做的事情?
感谢任何帮助。
NSOperationQueue *operationQueue = [[NSOperationQueue alloc] init];
[operationQueue setMaxConcurrentOperationCount:2];
for (User *user in users) {
NSBlockOperation *operationObject = [NSBlockOperation blockOperationWithBlock:^{
[user loadHistoryData:^{
[NSNotificationCenter postNotificationToMainThread:@"oneUserFetchedHistory"];
}];
}];
[operationQueue addOperation:operationObject];
}
这个问题与这个question 不同,因为我不想链接任何请求。我只想知道它们什么时候都执行完毕。
这个answer只有一个操作队列的完成块。
这个answer 提供了一种让操作块等待直到对loadHistoryData 的异步调用完成的方法。如写setSuspended
我找不到满足我需要的答案。有没有?
【问题讨论】:
-
我已经编辑了我的问题。我不认为这个问题是重复的@matt
-
但问题是该方法不等待异步操作在块操作中完成? @TheNextman
标签: ios objective-c nsoperationqueue nsoperation nsblockoperation