Toy*_*dor 3 cocoa-touch objective-c ios
我已经读过一个对象一次只能有一个委托.但这是真的吗?
假设我使用协议创建一个对象,并且我希望从该对象中收集来自其他几个对象的大量数据.我将符合我的协议的每个对象添加到一个数组中.然后我循环遍历它并在每个代理上调用我的方法.
NSMutableArray *collectFromDelegates = [NSMutableArray alloc]init];
//in delegateArray I keep pointers to every delegate.
for(id delegate in delegateArray){
[collectFromDelegates addObject:[delegate someProtocolMethod]];
}
Run Code Online (Sandbox Code Playgroud)
这是错的吗?
那不是真正的代表团.
委托是一种简单而强大的模式,其中程序中的一个对象代表另一个对象或与另一个对象协同工作.委托对象保持对另一个对象(委托)的引用,并在适当的时间向其发送消息.该消息通知委托委托对象即将处理或刚刚处理的事件.
拥有多个对象为您处理事件没有多大意义,因为它已经被处理过了.我可以看到有多个委托的唯一原因是,如果第一个无法处理事件,它可以传递给下一个,继续直到某个对象处理它.
在您的示例中,对象充当数据源.这比多个委托更有意义,但可以通过让单个数据源组合来自多个对象的数据来轻松实现,这意味着要求数据的对象不必担心如何组合它.
您经常需要多个对象的另一种情况是接收事件通知.这不是委托,因为对象不适用于对象,只是对对象发生的事情起作用.使用通知或观察可以更好地实现.
| 归档时间: |
|
| 查看次数: |
605 次 |
| 最近记录: |