關(guān)注swfit專題可以讓你學(xué)習(xí)swfit更簡(jiǎn)單,群號(hào):512847147
大家在開發(fā)中最熟悉應(yīng)該就是button了吧,button最好用的地方應(yīng)該就是可以添加點(diǎn)擊事件了,可以任由我們掉方法,但是你真的會(huì)用
[btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];這個(gè)方法嗎?
如果我想在btn上面添加類方法呢?
今天探討的就是給button添加類方法的點(diǎn)擊事件?廢話不多說了,直接上代碼:
> UIButton *btn;
[btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
+(void)btnClick:(UIButton *)btn
{
NSLog(@"七秒記憶魚兒");
}
這樣的寫的代碼會(huì)有問題嗎?其實(shí)大家一把用的都是直接在給button上面添加的是對(duì)象方法,沒有添加過類恩方法,那么現(xiàn)在需要你給button添加這樣的類方法,我們?cè)撊绾谓鉀Q呢?
其實(shí)這么問題的答案是需要大家理解self,這個(gè)關(guān)鍵字,在開發(fā)中我們一天都得寫百八十遍的,但是真正理解為self,的應(yīng)該不是很多吧(我是沒有明白)
個(gè)人理解:
如果在對(duì)象方法里面使用self時(shí),表示調(diào)用這個(gè)方法的對(duì)象,也就是個(gè)對(duì)象
如果在類方法里面使用了self時(shí),就表示調(diào)用這個(gè)類方法的類。
不知道大家有沒有遇到過這樣的錯(cuò)誤,就是當(dāng)你在lei方法里面使用self去調(diào)用對(duì)象方法時(shí)候,會(huì)直接報(bào)錯(cuò)誤,這個(gè)就是在類方法里面使用的self時(shí),self就是表示這個(gè)類,而類方法列表里面就沒有這個(gè)方法,因?yàn)榉椒ㄊ菍?duì)象方法,它儲(chǔ)存在對(duì)象方法列表中。
總結(jié)
咱們?cè)倩氐絙utton的點(diǎn)擊方法上面,我們給button添加的響應(yīng)者是self,如果是在類方法里面添加的button的點(diǎn)擊方法,那就不會(huì)直接崩潰,會(huì)正常運(yùn)行。
按鈕出發(fā)的條件:
Target :表示誰去觸發(fā)這個(gè)方法
action: 表示觸發(fā)的方法
forControlEvents:表示出發(fā)的條件
個(gè)人理解就是:當(dāng)按鈕的出發(fā)條件滿足了,target就會(huì)去出發(fā)這個(gè)方法。但是taget是誰就去誰里面找action。如果是對(duì)象就找對(duì)象方法列表里面找這個(gè)方法,如果是類就去類方法列表里面找這個(gè)方法。
如果你不理解什么是對(duì)象方法列表或者類方法列表,請(qǐng)參考兩行代碼引發(fā)的血案
下面為探討的結(jié)果截圖


這個(gè)為擴(kuò)展在對(duì)象方法里面給button添加類方法的點(diǎn)擊
