gpt4 book ai didi

ios - 如果使用 [NSOperation start] 手动执行,NSOperation 会在哪个线程上运行?

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:12:37 26 4
gpt4 key购买 nike

我想在当前执行的线程上同步执行一个 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com