我正在学习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/