我将我的项目从Swift 3升级到Swift 4,在迁移过程中,它在我的代码中插入了一堆"@objc"注释。我希望去掉它们以避免生成任何Objective-C入口点。其中一个我不知道如何摆脱,就是使用刷新控件。以下是违规代码:
let refreshControl = UIRefreshControl()
refreshControl.addTarget(self, action: #selector(MyController.handleRefresh(refreshControl:)), for: .valueChanged)
self.table.refreshControl = refreshControl;
问题似乎是使用了#选择器。如何在没有选择器的情况下实现刷新控制?
我想去掉它们
你不能,你需要停止想要。#selector
是一个Objective-C功能,因此你必须向Objective-C显式公开操作方法。(以前你已经含蓄地暴露了它;现在你必须说出你的意思。)
您可以使用@IBAction
而不是@objc
两者都使用反射,但Swift4对@IBAction
没有问题