圖片發(fā)自簡書App
給button擴展類目, 在類目里面使用runtime關聯(lián)一個對象, 綁定button的點擊事件, 當button被點擊時, 使用block把button傳出來, ?UIButton+TouchUpInsideBlock是我寫的, 我需要把button傳出來以便使用, UIButton+Block, 是我同事寫的, 同事在回調的時候沒有把button傳出來.
遇到的坑是, 本來我是在另外一個工程中用到了UIButton+TouchUpInsideBlock, 沒有任何問題, 但是當我把這個類放到含有UIButton+Block類的工程里, 我的block回調就失效了. 真的讓我很郁悶, 經過自己多次試驗, 終于發(fā)現是因為我在UIButton+TouchUpInsideBlock, 給button綁定的方法名和UIButton+Block類里button綁定的發(fā)放名一樣, 就是在UIButton+TouchUpInsideBlock.m文件有個callTouchUpInsideEvent:方法, 如果把這個方法名寫成callActionBlock:和UIButton+Block.m文件中的callActionBlock:一樣的方法名, UIButton+TouchUpInsideBlock里面的函數回調就會失效. 這兩個選擇器的名字不能一樣.
但是問題來了,既然選擇器方法名稱一樣會導致方法注冊失敗, 但為什么是UIButton+TouchUpInsideBlock里的方法失效, 而不是UIButton+Block類里的方法失效, 在多個工程里面試驗, 效果都一樣?