血案之button

关注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。如果是对象就找对象方法列表里面找这个方法,如果是类就去类方法列表里面找这个方法。
如果你不理解什么是对象方法列表或者类方法列表,请参考两行代码引发的血案

下面为探讨的结果截图
血案之button_第1张图片
BFFBBD3F716903BC2C44265F39DFD1E2.jpg
血案之button_第2张图片
7B6860D1-63EE-40CA-9AD7-6C2E0212CC90.png

这个为扩展在对象方法里面给button添加类方法的点击

血案之button_第3张图片
8FA82AF8D2432BEF81D4C9FF1D0695A0.jpg

你可能感兴趣的:(血案之button)