浏览 Stack Overflow,您会发现许多有关如何向按钮添加操作、向 View 添加操作等等的资源。这些资源中的每一个都使用 @objc
,因为 #selectors
是 objc
代码。但是,我找不到一个资源可以在不使用 objc 的情况下向 View 添加操作。
将某些内容标记为 objc
会将其公开给 Objective-C
运行时,这在使用选择器时是必需的。
本质上,这可以归结为以下问题:
- 是否可以在不使用
@objc
代码的情况下创建操作?- 如果是这样,为什么有这么多资源使用
@objc
代码进行操作?
- 如果是这样,为什么有这么多资源使用
- 如果不可能,为什么还没有采取任何行动?
- 为什么我们已经达到了 Swift 版本 4,却没有向 View 添加操作的等效
Swift
功能? - future 是否会有更新实现用于向 View 添加操作的
Swift
变体?
- 为什么我们已经达到了 Swift 版本 4,却没有向 View 添加操作的等效
最佳答案
目标/选择器机制是很久以前在 Objective-C 中编写 UIControl
(和类似的类)的方式,甚至在 Objective-C block 出现之前。
您的问题对于 Objective-C 来说同样有效。为什么 UIControl
(和类似的)不提供基于 block 的 API,而不是过时的目标/选择器模式?
所以这不是更新 Swift 的问题。这是一个向使用目标/选择器模式的相关类添加基于 block /闭包的 API 的问题。
如果您在 GitHub 上进行一些搜索,您会发现一个基于闭包的 Swift API 实际上可以实现您想要的功能。当然,它的实现是使用旧的目标/选择器 API。
关于swift - 为什么没有 Swift 等效项来向 View 添加操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51020287/