作者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