使用addOperationWithBlock包装方法调用和使用addOperationWithBlock包装整个方法实现有什么区别?

时间:2013-09-24 14:25:09

标签: ios nsoperationqueue

使用addOperationWithBlock包装方法调用和使用addOperationWithBlock包装整个方法实现之间的区别是什么?

假设我有一个名为foo的方法。

之间有什么区别吗?
- (void) foo{
             [NSOperation mainQueue] addOperationWithBlock:^{
                                     some code
             }];
         }

[NSOperation mainQueue] addOperationWithBlock:^{
                                                [self foo];
}];

1 个答案:

答案 0 :(得分:0)

不同之处在于,在第一种情况下,方法foo将始终在mainQueue上执行(即使从不同的线程调用),而在第二种情况下,在右侧线程上执行它的责任是委托给任何调用该方法的人。

如果您可能不希望foo在主线程上执行,那么请不要选择第一个选项。另一方面,如果foo 总是应该在主线程上执行(即UI操作),那么第一个代码片段就是可行的方法。