NSBlockOperation
phát hành một khối. NSInvocationOperation
thực thi một số NSInvocation
(hoặc một phương thức được xác định bởi đích, bộ chọn, đối tượng). NSOperation
phải được phân lớp, nó cung cấp sự linh hoạt nhất nhưng yêu cầu nhiều mã nhất.
NSBlockOperation and NSInvocationOperation là cả hai lớp con của NSOperation. Chúng được cung cấp bởi hệ thống, do đó bạn không phải tạo một lớp con mới cho các tác vụ đơn giản.
Sử dụng NSBlockOperation và NSInvocationOperation phải đủ cho hầu hết các tác vụ.
Dưới đây là một ví dụ mã cho việc sử dụng cả ba mà thực hiện chính xác những điều tương tự:
// 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];
}
Nguồn
2013-09-05 09:19:57
Nó sẽ tốt hơn nếu bạn sử dụng văn bản khác nhau trong mỗi hoạt động để tách chúng ra khỏi nhau thay vì "Hello World" nhiều lần. Chỉ là một gợi ý – c0d3Junk13