环顾 Stack Overflow,您会发现许多关于如何向按钮添加操作、向 View 添加操作等的资源。这些资源中的每一个都使用@objc
,因为#selectors
是objc
代码。但是,我找不到任何资源可以在不使用 objc
的情况下向 View 添加操作。
将某些东西标记为 objc
会将其暴露给 Objective-C
运行时,这在使用选择器时是必需的。
本质上,它归结为这些问题:
- 是否可以在不使用
@objc
代码的情况下创建 Action ?- 如果是这样,为什么有这么多资源使用
@objc
代码来执行操作?
- 如果是这样,为什么有这么多资源使用
- 如果不可能,为什么还没有采取任何措施?
- 为什么我们已经达到了 Swift 版本 4,却没有用于向 View 添加操作的
Swift
等价物? - 将来是否会有更新来实现
Swift
变体以向 View 添加操作?
- 为什么我们已经达到了 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/51005654/