为什么在视图中添加操作时没有Swift等价物?

为什么在视图中添加操作时没有Swift等价物?,swift,Swift,环顾堆栈溢出,您将发现许多关于如何向按钮添加操作、向视图添加操作等的资源。每个资源都使用@objc,因为#选择器是objc代码。但是,我找不到任何一个资源在不使用objc的情况下向视图添加操作。 将某物标记为objc会将其暴露给Objective-C运行时,这是使用选择器时所必需的 本质上,它归结为以下问题: 是否可以在不使用@objc代码的情况下创建操作? 如果是这样,为什么这么多资源使用@objc代码进行操作 如果不可能,为什么还没有采取任何行动? 为什么我们达到了Swift第4版,

环顾堆栈溢出,您将发现许多关于如何向按钮添加操作、向视图添加操作等的资源。每个资源都使用
@objc
,因为
#选择器
objc
代码。但是,我找不到任何一个资源在不使用
objc
的情况下向视图添加操作。 将某物标记为
objc
会将其暴露给
Objective-C
运行时,这是使用选择器时所必需的

本质上,它归结为以下问题:

  • 是否可以在不使用
    @objc
    代码的情况下创建操作?
    • 如果是这样,为什么这么多资源使用
      @objc
      代码进行操作
  • 如果不可能,为什么还没有采取任何行动?
    • 为什么我们达到了Swift第4版,却没有为视图添加操作的
      Swift
      等价物
    • 将来是否会有一个更新来实现向视图添加操作的
      Swift
      变体

目标/选择器机制是很久以前在Objective-C中编写的
UIControl
(和类似类),甚至在Objective-C块出现之前

您的问题对于Objective-C同样有效。为什么不提供基于块的API而不是过时的目标/选择器模式

所以这不是更新Swift的问题。这是一个向使用目标/选择器模式的相关类添加基于块/闭包的API的问题

如果您在GitHub上进行一点搜索,您将发现一个基于闭包的Swift API,它实际上实现了您想要的功能。当然,它的实现是使用旧的目标/选择器API