是否有任何约定指示块何时与当前线程同步执行?

时间:2013-08-07 02:43:08

标签: objective-c objective-c-blocks

在Objective-C块中,可以异步或同步运行,具体取决于目的。仅仅看一下API方法就不会告诉我们将采用哪种方式。

如果有一个约定指示块是否将被分派到另一个线程或与当前线程同步运行,那将是很好的。

有吗?

更新:其他语言可能会使用注释。我正在考虑在va_args方法中使用的NS_REQUIRES_NIL_TERMINATION。

1 个答案:

答案 0 :(得分:1)

NO。没有标准方法来定义块的执行方式。您必须阅读文档(如果有)或源代码(如果有)才能找到答案。

但是,您可以控制传入的块,这样就可以使它始终在主线程上执行或异步执行。

e.g。

[queue performBlock:^ {
    dispatch_async(dispatch_get_main_queue(), ^{
        // you know code here must be on main thread
    });
}];