一、 随着swift语言的不断更新,语法也会偶尔发生变化。在做新项目时候,Swift
用4.2
版本,创建一个按钮,注册点击事件
// 事件监听 ,旧版本是这种写法
composeBtn.addTarget(self, action: Selector("composeBtnClick"), for: .touchUpInside)
警告11.1 但是运行崩溃,警告如下:
1.2 点击
"Fix"
:
action: Selector(("composeBtnClick")) // 没有警告 但是点击按钮崩溃,崩溃截图如下3
二、实现点击事件方法
/// 事件监听
extension PNMainViewController{
func composeBtnClick(){
print("composeBtnClick")
}
}
三、运行结果崩溃
运行结果分析原因:
意思是找不到这个方法,这个方法不在方法列表里,如果加上@objc
,就会把该方法添加到方法列表中。所以,@objc
必须加上。
解决办法:
警告2(因为方法前面没有加上
@objc
)在需要实现的方法前加上@objc
, 上一个警告就变为:
点击
"Fix"
,运行,点击按钮,调用方法成功:
composeBtn.addTarget(
self,
action: #selector(PNMainViewController.composeBtnClick) ,
for: .touchUpInside
)
总结:
1 @objc
必须加到方法前面
2 Selector
要正确写选择器
网友评论