swift - 为什么没有 Swift 等效项来向 View 添加操作?

标签 swift

浏览 Stack Overflow,您会发现许多有关如何向按钮添加操作、向 View 添加操作等等的资源。这些资源中的每一个都使用 @objc,因为 #selectorsobjc 代码。但是,我找不到一个资源可以在不使用 objc 的情况下向 View 添加操作。 将某些内容标记为 objc 会将其公开给 Objective-C 运行时,这在使用选择器时是必需的。

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

  • 是否可以在不使用 @objc 代码的情况下创建操作?
    • 如果是这样,为什么有这么多资源使用 @objc 代码进行操作?
  • 如果不可能,为什么还没有采取任何行动?
    • 为什么我们已经达到了 Swift 版本 4,却没有向 View 添加操作的等效 Swift 功能?
    • future 是否会有更新实现用于向 View 添加操作的 Swift 变体?

最佳答案

目标/选择器机制是很久以前在 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/

相关文章:

ios - 无法使用 UITableViewDelegate

ios - SwiftUI 允许 Struct 中的所有字符串枚举

ios - 使用swift的方式笔划轮廓编号

ios - 从我的应用程序内部打开 IMDB

ios - 自动续订订阅收据验证

ios - 我在 Tableview 单元格中有 collectionView。它总是返回零。我该如何解决?

ios - 我如何准备 segue 在我的 TableViewController 中加载不同的数组?

ios - MKMapView 和用户位置计时

ios - 保存到图库后检索视频资源

swift - HealthKit 授权在 iOS 10 beta 1 中因未处理的 NSException 而崩溃