gpt4 book ai didi

multithreading - 将某些任务分派(dispatch)到 "background thread"并在完成后在主线程上执行任务的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-03 17:03:02 24 4
gpt4 key购买 nike

我正在学习GCD,我想知道以下内容是否可以:有更好的方法吗?

我还想知道我是否需要在接下来的内容中弱化self。我正在使用ARC

id someObject = [self getSomeObject] ;

dispatch_queue_t newThread = dispatch_queue_create("New thread", NULL) ;

dispatch_async(newThread, ^
{
[self doSomeStuff] ;

[someObject doSomeStuffOnMyObject] ;

/*
Back on the main thread
*/
dispatch_async(dispatch_get_main_queue(), ^
{
[self doSomeStuffMore] ;

[someObject doSomeStuffOnMyObjectMore] ;
}) ;
}) ;

那么,如果这是一个好方法,我应该在 NSObject 上创建一个类别吗?

最佳答案

最常见的做法是:

dispatch_async(dispatch_get_global_queue(priority, flags), ^(void) {
// code

dispatch_async(dispatch_get_main_queue(), ^(void) {
// code
});
});

如果您计划修改 block 内的 someObject 并随后使用它,那么您应该在其前面添加 __block - 更多信息 here

__block id someObject = [self getSomeObject];

附注你的分号风格是独一无二的:D

关于multithreading - 将某些任务分派(dispatch)到 "background thread"并在完成后在主线程上执行任务的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22103153/

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