我将我的项目从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。如何在没有选择器的情况下实现刷新控制?
我希望摆脱他们
你不能,你需要停止想要。 #selector
是一个Objective-C功能,因此您必须将操作方法显式公开给Objective-C。 (以前你已经暗中暴露过它;现在你必须说出你的意思。)
您可以使用@IBAction
而不是@objc
两者都使用反射,但Swift4与@IBAction
没有问题