Re: [問題] 除了subclass外更改method的方法?

看板MacDev作者 (zonble)時間14年前 (2011/03/03 21:39), 編輯推噓5(5010)
留言15則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《dryman (dryman)》之銘言: : 如題 : 請問如果我只想修改某個物件的一個method : 我還是得先繼承這個物件再予以修改嗎? : 因為要改的物件還不少(我想覆寫幾個已經放在IB上的元件按enter時的效果) : 每個都要自己做個class再覆寫keydown好麻煩...orz 你可以只做一個 subclass,然後自己寫一個 protocol, 把 keydown 發生的事情丟給 delegate 處理。 但是這樣 delegate method 裡頭大概也會有一大堆 if else 就是了,但至少不用那麼多 subclass。 : 最近一直瘋狂的問問題(汗) : 有勞大家解答了... : BTW iPad2可以用photo booth耶 : 所以現在iPad2裡面可以使用core image了嗎? iOS 4.3 裡頭目前沒有看到 CIImage 這個 class 公開出來。 說到這個,Lion 裡頭目前多出來 AVFoundation,這個倒是有點奇妙, iOS 的 AVFoudation 與 Cocoa 的 QTKit 性質有很大的重疊,而 現在要把 AVFoundation 放在 Mac 上,不知道是不是要把 QTKit 換掉的意思。 -- zonble.net cocoa.zonble.net -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.128.103.143

03/03 22:46, , 1F
感謝~~
03/03 22:46, 1F

03/03 23:25, , 2F
我發現我想不出來該怎麼實作...我不知道該怎麼叫那些IB元件
03/03 23:25, 2F

03/03 23:26, , 3F
吃我的protocol,或是把特定的事件用delegate來處理...
03/03 23:26, 3F

03/03 23:26, , 4F
我查一查文件再上來問好了,感謝回答 <(_ _)>
03/03 23:26, 4F

03/04 00:21, , 5F
建議把這一篇讀一讀 http://0rz.tw/rSQ6x :p
03/04 00:21, 5F

03/04 00:42, , 6F
如果完全不會用到原本的功能 直接用category覆寫 會不會
03/04 00:42, 6F

03/04 00:42, , 7F
比較好?
03/04 00:42, 7F

03/04 00:59, , 8F
不覆寫的話 也可用method_exchangeImplementations
03/04 00:59, 8F

03/04 00:59, , 9F
在runtime時交換method的功能
03/04 00:59, 9F

03/04 01:01, , 10F
method_setImplementation也可以用 試試看吧 :)
03/04 01:01, 10F

03/04 05:26, , 11F
在 category 裡頭放一個原本就有的 method 其實不是好主意
03/04 05:26, 11F

03/04 05:26, , 12F
這樣以後別人閱讀程式碼的時候,不見得知道 runtime 會改變
03/04 05:26, 12F

03/04 05:27, , 13F
這樣日後維護會很恐怖,不如 subclass
03/04 05:27, 13F

03/04 09:10, , 14F
如果只是測試用應該沒關係XD 可以參考MethodSwizzing
03/04 09:10, 14F
文章代碼(AID): #1DRveRVY (MacDev)
文章代碼(AID): #1DRveRVY (MacDev)