Re: [問題] Obj-C中的delegate如何運作?
※ 引述《leondemon (狗狗)》之銘言:
: 看了一些資料和書 還是不太懂什麼是delegate
: 以及他是如何運作的...
: 有沒有什麼比較白話的例子能夠幫助了解呢?
: 謝謝:)
用 Aaron Hillegass 的講法XD
假設你現在想製造一個正義英雄
當然如果你旁邊有 Superman 之類的另當別論, 但假設你沒有
那你有兩種作法, Hillegass 稱之為「機器戰警法」和「霹靂遊俠法」
大部分的物件導向語言都使用前者
先建立一個「人」class 的 subclass, 然後開始改寫
例如把「右手」method 改成機槍,「左手」改成機關砲等等
「眼睛」加上熱掃描功能順便內建夜視, 順便新增一個噴射器 method 還可以飛
但 Objective C (in Cocoa) 的作法不太一樣
他們另外打造了一台霹靂車「夥計」
當然夥計是有特別設計過的, 要李麥克才能開
不過這個李麥克除了把妹很罩之外其實沒什麼用, 只是(有主角威能的)一般人
這樣我們就說, 夥計是李麥克的 delegate
平常走在路上的時候, 車子當然是李麥克在開, 事情是交給他來處理
可是當遇到他沒辦法解決的問題時, 例如前面有牆
李麥克就會把控制權交給夥計, 讓他發射幾根火箭炮來開路
當然, 夥計開完路之後就會把控制權交還給李麥克, 讓他繼續開車
所以在 Cocoa 程式裡你不太會去弄一堆 subclass 繼承來繼承去
而是會建立一個又一個的 helper object, 來輔佐已有的 class 做到更多事
大概是這樣...
有興趣可以看 CocoaCast 的 Episode 7
或者 Hillegass 在 Cocoa Programming in Mac OS X 裡我覺得寫得最清楚
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.135.72.123
推
05/29 19:35, , 1F
05/29 19:35, 1F
推
05/29 19:39, , 2F
05/29 19:39, 2F
→
05/29 19:39, , 3F
05/29 19:39, 3F
→
05/29 19:41, , 4F
05/29 19:41, 4F
→
05/30 09:20, , 5F
05/30 09:20, 5F
討論串 (同標題文章)
MacDev 近期熱門文章
PTT數位生活區 即時熱門文章