关注swfit专题可以让你学习swfit更简单,群号:512847147
大家在开发中最熟悉应该就是button了吧,button最好用的地方应该就是可以添加点击事件了,可以任由我们掉方法,但是你真的会用
[btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
这个方法吗?
如果我想在btn上面添加类方法呢?
今天探讨的就是给button添加类方法的点击事件?废话不多说了,直接上代码:
> UIButton *btn;
[btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
+(void)btnClick:(UIButton *)btn
{
NSLog(@"七秒记忆鱼儿");
}
这样的写的代码会有问题吗?其实大家一把用的都是直接在给button上面添加的是对象方法,没有添加过类恩方法,那么现在需要你给button添加这样的类方法,我们该如何解决呢?
其实这么问题的答案是需要大家理解self
,这个关键字,在开发中我们一天都得写百八十遍的,但是真正理解为self
,的应该不是很多吧(我是没有明白)
个人理解:
如果在对象方法里面使用self
时,表示调用这个方法的对象,也就是个对象
如果在类方法里面使用了self
时,就表示调用这个类方法的类。
不知道大家有没有遇到过这样的错误,就是当你在lei方法里面使用self
去调用对象方法时候,会直接报错误,这个就是在类方法里面使用的self
时,self
就是表示这个类,而类方法列表里面就没有这个方法,因为方法是对象方法,它储存在对象方法列表中。
总结
咱们再回到button的点击方法上面,我们给button添加的响应者是self
,如果是在类方法里面添加的button的点击方法,那就不会直接崩溃,会正常运行。
按钮出发的条件:
Target :表示谁去触发这个方法
action: 表示触发的方法
forControlEvents:表示出发的条件
个人理解就是:当按钮的出发条件满足了,target就会去出发这个方法。但是taget是谁就去谁里面找action。如果是对象就找对象方法列表里面找这个方法,如果是类就去类方法列表里面找这个方法。
如果你不理解什么是对象方法列表或者类方法列表,请参考两行代码引发的血案