Foundation Framework中有三个操作类(NSOperation
,NSInvocationOperation
和NSBlockOperation
)。
我已经读过concurrency programming guide,但我不完全了解这三个类之间的区别。请帮我。
最佳答案
NSBlockOperation
执行一个块。 NSInvocationOperation
执行 NSInvocation
(或由目标,选择器,对象定义的方法)。 NSOperation
必须是子类的,它提供最大的灵活性,但需要最多的代码。
NSBlockOperation和NSInvocationOperation都是NSOperation的子类。它们由系统提供,因此您不必为简单任务创建新的子类。
对于大多数任务,使用NSBlockOperation和NSInvocationOperation应该足够了。
这是一个使用这三个功能完全相同的代码示例:
// For NSOperation subclass
@interface SayHelloOperation : NSOperation
@end
@implementation SayHelloOperation
- (void)main {
NSLog(@"Hello World");
}
@end
// For NSInvocationOperation
- (void)sayHello {
NSLog(@"Hello World");
}
- (void)startBlocks {
NSBlockOperation *blockOP = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"Hello World");
}];
NSInvocationOperation *invocationOP = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(sayHello) object:nil];
SayHelloOperation *operation = [[SayHelloOperation alloc] init];
NSOperationQueue *q = [[NSOperationQueue alloc] init];
[q addOperation:blockOP];
[q addOperation:invocationOP];
[q addOperation:operation];
}
关于iphone - NSInvocationOperation和NSBlockOperation有什么区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18632271/