Swift5.0 No method declared with Objective-C selector 'xxx'

05-30 15:23 字数 658 阅读 597

写了一段事件监听的代码如下

publishBtn.addTarget(self, action: "publishBtnClick", for: .touchUpInside)

报了警告如下

No method declared with Objective-C selector 'publishBtnClick'
Replace '"publishBtnClick"' with 'Selector("publishBtnClick")'

意思是没有定义一个OC的selctor,按照官方建议点了Fix之后变成这样

publishBtn.addTarget(self, action: Selector("publishBtnClick"), for: .touchUpInside)

继续报警告,在此点击fix之后变成了这样

publishBtn.addTarget(self, action: Selector(("publishBtnClick")), for: .touchUpInside)

这下不报警告了,但是运行APP之后,点击按钮,直接crash了。。。

以上的三种方法都不管报不报警告,在运行APP后,都不能时间事件监听,都会崩溃。

后来在网上看到这种写法,经测试确实可用。

publishBtn.addTarget(self, action: #selector(publishBtnClick), for: .touchUpInside)

// 但是要在对应的方法前面加@objc
@objc func publishBtnClick() {
      print(#function)
}
1人点赞>
关注 收藏 改进 举报
0 条评论
排序方式 时间 投票
快来抢占一楼吧
请登录后发表评论