1

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

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

有吗?

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

4

1 回答 1

1

不。没有标准的方法来定义块如何被执行。您必须阅读文档(如果有)或源代码(如果有)来找出答案。

但是,您可以控制传入的块,因此可以使其始终在主线程或异步执行。

例如

[queue performBlock:^ {
    dispatch_async(dispatch_get_main_queue(), ^{
        // you know code here must be on main thread
    });
}];
于 2013-08-07T04:54:48.557 回答