首页 > 解决方案 > 如何判断 Objective-C 中的块参数是否正在转义?

问题描述

在这里的长期 Swift 开发人员,但大约十年没有接触过 Objective-C,所以肯定生疏了。试图弄清楚如何判断一个块参数是否正在转义(即,我知道是否使用弱引用,因为非转义块不需要它。)

例如,根据我的阅读,在 Objective-C 中,默认情况下,块参数是隐式转义的(这与 Swift BTW 相反。)如果你不想这样,你必须使用NS_NOESCAPE注释,就像这样。 ..

- (void)executeActions:(void (NS_NOESCAPE ^)(void))actions;

但是,enumerateObjectsUsingBlock我被告知的功能是不可转义的,但我在 Apple 的文档中没有看到该方法的注释。实际上,他们根本不谈论逃避或不逃避。他们只是列出方法。

同样,这里是文档

然后我试图搜索头文件。我遇到了NSArray.h它确实提到它,但我也没有看到NS_NOESCAPE

https://github.com/.../NSArray.h(第 79 行)

(我认为这可能是一个生成/抓取的页面,所以可能在这里找不到该信息,您需要原始标题。不确定。再次,生锈。)

那么如何确定一个方法的块参数是否正在转义呢?

标签: objective-cobjective-c-blocks

解决方案


的文档enumerateObjectsUsingBlock:

此方法同步执行。

添加时文档未更新NS_NOESCAPE


推荐阅读