Objective-C是否与Swift的@escaping注释相同?

Gre*_*reg 8 objective-c swift

在Swift中,转义闭包参数用注释@escaping.Objective-C中是否有任何等价物,以便生成的Swift接口标记为@escaping

mat*_*att 10

是的,但它与您在问题中的建议相反.规则是Objective-C不可破坏的块自动转换为Swift作为@escaping函数,除非它被明确标记.(NS_NOESCAPE ^)

  • 只是一个评论(因为那有点我):只有当 Objective-C 块参数被标记为 _Nonnull 时,您才会在 Swift 生成的接口中看到 @escaping。否则,它会作为 IUO 导入,默认情况下它们会转义。 (2认同)
  • 可选的闭包是“隐式转义”:https://bugs.swift.org/browse/SR-2324、/sf/answers/2789256361/、https://oleb.net/blog/2016/ 10/optional-non-escaping-closures/。 (2认同)