作者offname (Loafer是了好)
看板MacDev
標題Re: [問題] Obj-C中的delegate如何運作?
時間Sun May 31 01:32:12 2009
※ 引述《leondemon (狗狗)》之銘言:
: 看了一些資料和書 還是不太懂什麼是delegate
: 以及他是如何運作的...
: 有沒有什麼比較白話的例子能夠幫助了解呢?
: 謝謝:)
這裡提供另一個想法
Refactoring 這本書有提到(中文版的P.352)
Delegate 常用在,當某一個subclass只用一些superclass的功能
反之如果subclass用到大部分的superclass的功能就直接繼承
例子是要實作一個MyStack,但要用到Vector的功能
與其MyStack 繼承Vector,不如用delegate
因為MyStack只會用到Vector裡isEmpty()和siz()
那pop, 和push就自已實作
Code:
class MyStack {
private Vector v = new Vector();
public int size(){
return v.size();
}
public boolean isEmpty(){
return v.isEmpty();
}
public push(Object o){
// 自己寫
}
public Object pop(){
// 自己寫
}
}
很簡單的一個想法就是,new一個object幫你做事。
希望有幫到忙。呵
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.62.94.242
1F:推 leondemon:有懂delegate的用意 不過還是不太懂整體是怎麼運作的 XD 05/31 02:37
2F:→ leondemon:如果我需要一個helper object那我要在Xcode和IB中做哪些 05/31 02:38
3F:→ leondemon:設定 才能讓原本的instance去delegate別的物件? 05/31 02:38
4F:→ leondemon:不太懂IB(interface builder)中 何時要connect delegate 05/31 02:39
5F:→ leondemon:而且delegate的connection似乎只能單方面設定? 05/31 02:40
6F:→ zonble:不過,ObjC 裡頭的 delegate 通常不是這樣用…。 05/31 04:02
7F:→ zonble:這樣比較像是成員變數的 getter setter 耶…。 05/31 04:03
8F:→ zonble:因為 ObjC 的 delegate 通常只會放一個外部的指標 05/31 04:08
9F:→ zonble:比較不會是在 Class 裡頭生物件 05/31 04:09