我正在学习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
之上创建一个类别吗?
答案 0 :(得分:2)
最常见的做法就是:
dispatch_async(dispatch_get_global_queue(priority, flags), ^(void) {
// code
dispatch_async(dispatch_get_main_queue(), ^(void) {
// code
});
});
如果您打算在块中修改someObject
并在之后使用它,那么您应该在__block
前面添加前缀 - 更多信息here
__block id someObject = [self getSomeObject];
P.S。你的分号风格是独一无二的:D