jlp*_*ita 1 iphone cocoa-touch nsoperation nsoperationqueue ios5
我试图弄清楚为什么在添加到NSOperationQueue(iOS5,ARC)时没有执行具有依赖关系的NSOperation:
@implementation NSOperationTest {
NSOperationQueue *_operationQueue;
}
- (id)init {
self = [super init];
if (self) {
_operationQueue = [[NSOperationQueue alloc] init];
}
return self;
}
-(void) test
{
NSBlockOperation *op1 = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"op1 running");
}];
NSBlockOperation *op2 = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"op2 running");
}];
[op2 addDependency:op1];
[_operationQueue addOperation:op2];
}
@end
Run Code Online (Sandbox Code Playgroud)
这让我抓狂,这里op1应该先执行op2,但要么执行,要么在没有依赖的情况下添加都可以正常工作.有人知道为什么吗?
提前致谢.
您必须显式地对操作队列执行任何操作(或直接执行它)才能执行 - 依赖项也不例外.如果没有这样做(正如你所做的那样)op2将永远不会执行,因为它等待op1执行,op1从未被告知执行.因此,通过[_operationQueue addOperation: op1];在test方法结束时添加,您的问题应该得到解决.
| 归档时间: |
|
| 查看次数: |
1473 次 |
| 最近记录: |