objective-c - 如何判断 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 行)
(我认为这可能是一个生成/抓取的页面,所以可能在这里找不到该信息,您需要原始标题。不确定。再次,生锈。)
那么如何确定一个方法的块参数是否正在转义呢?
解决方案
的文档enumerateObjectsUsingBlock:
说
此方法同步执行。
添加时文档未更新NS_NOESCAPE
。
推荐阅读
- jqgrid - jqgrid旧版本4.1.3中过滤的记录ID
- elasticsearch - Logstash Rabbitmq 连接被拒绝
- javascript - window.onblur 到 xAPI 语句
- echarts - echarts sunburst 虚拟根节点行为
- git - 无法通过 Java 插件 hudson.plugins.git 从邻居 gogs 容器中签出詹金斯
- css - 如何在离子中的div的背景上制作半圈?
- asp.net - 带有 Html 元素的 ASP.NET Tag Helper
- ios - GKAgent 不会更新在 ARKit/SCNScene/GamplayKit 游戏中注册为团队实体的 SCNNode 的位置
- apache-nifi - 如何使用 NiFi 获取 Blob 文件?
- google-cloud-platform - BigQuery 有新数据时触发云函数