作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想在当前执行的线程上同步执行一个 NSOperation。我可以只调用 [NSOperation start] 吗?这是否总是在当前正在执行的线程中运行?
另一种方法是创建一个 NSOperationQueue,添加操作,然后调用 waitUntilAllOperationsFinished 选择器。
最佳答案
如果调用[NSOperation start]
,它将在当前线程上同步执行。围绕操作的所有异步工作都由 NSOperationQueue
处理,但如果您自己调用 -start
那么您将绕过所有这些。
当然,可以实现一个特定的NSOperation
子类来在另一个线程上产生一个异步任务本身;这完全取决于它。但是,如果您调用 -start
,则设计为在操作队列运行它的任何线程中同步执行的操作也将在您的线程中同步执行。
例如下面的代码,运行时:
NSOperation *op = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"operation");
}];
[op start];
NSLog(@"complete");
打印:
operation
complete
关于ios - 如果使用 [NSOperation start] 手动执行,NSOperation 会在哪个线程上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13852080/
我是一名优秀的程序员,十分优秀!