我想在当前执行的线程上同步执行一个 NSOperation。我可以直接调用 [NSOperation start] 吗?这是否总是在当前执行的线程中运行?
另一种方法是只创建一个 NSOperationQueue,添加操作,然后调用 waitUntilAllOperationsFinished 选择器。
我想在当前执行的线程上同步执行一个 NSOperation。我可以直接调用 [NSOperation start] 吗?这是否总是在当前执行的线程中运行?
另一种方法是只创建一个 NSOperationQueue,添加操作,然后调用 waitUntilAllOperationsFinished 选择器。
如果调用[NSOperation start]
,它将在当前线程上同步执行。围绕操作的所有异步工作都由 处理NSOperationQueue
,但如果您调用-start
自己,那么您将绕过所有这些。
当然,NSOperation
可以实现一个特定的子类来在另一个线程上产生一个异步任务本身;这完全取决于它。但是,设计为在操作队列运行的任何线程中同步执行的操作,如果您调用-start
.
例如,以下代码在运行时:
NSOperation *op = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"operation");
}];
[op start];
NSLog(@"complete");
印刷:
operation
complete