在编程的过程中监听事件是我们经常使用的,在OC中使用@SEL选择器,那么在Swift中 Selector选择器,
-
监听事件的本质是 发送消息,也就是OC 中的消息机制 原理如下:
- 将方法包装成@SEL
- 在类中查找方法列表
- 根据@SEl找到 imp指针(对应的函数)
- 执行找到的函数
-
需要知道的是 Swift中没有消息机制,那么在使用Selector选择器的时候 需要进行包装,使用如下:
Selector("方法的名字")
- 直接写方法名 格式:
"方法名"
#selector(方法名)
- 对应的方法名 必须加
@objc
转化成OC 的方法
-
注意 一个函数被 声明成
private
函数,那么该函数就不会被添加到方法列表中,那么这个函数就不会被找到, 如果想要被找到 必须加@objc
private lazy var paluseBtn:UIButton = {
$0.setImage(UIImage(named:"tabbar_compose_icon_add"), for: .normal);
$0.setImage(UIImage(named:"tabbar_compose_icon_add_highlighted"), for: .highlighted);
$0.setBackgroundImage(UIImage(named:"tabbar_compose_button"), for: .normal)
$0.setBackgroundImage(UIImage(named:"tabbar_compose_button_highlighted"), for: .highlighted)
//方法选择
$0.addTarget(self, action: #selector(didClickButton), for: .touchUpInside);
$0.sizeToFit();
self.addSubview($0);
return $0;
}(UIButton(type:.custom));
//MARK:-监听事件
extension CCTabBar {
//函数见面必须 添加 @objc
@objc private func didClickButton() {
print("是不是可以打印")
}
}
网友评论