代理和数据源之间有什么区别?
两者都可以使用@protocols声明,但是一些类或框架使用委托,另一些则使用数据源。
所有我可以从UI / NStableVIEw了解是委派响应UI相关的事件,而数据源纯粹与数据相关。但是,我不知道任何数据源实现外面的可穿戴类的Cocoa。
注意:
>我在这个问题中提到的委托并不总是与UI事件相关。
>数据源问题已回答。
委托模式在Cocoa中非常常见,并允许委托(任何在OS X 10.6之前实现非正式委托协议的实例,或者在10.6和更高版本中的正式委托@protocol)来修改对象实例的行为。通常使用此模式而不是子类化:而不是子类化一个类来改变它的行为,你提供一个响应适当方法的代理。使用委托的类在合同事件中向其委托发送消息。类和委托之间的API由类定义,并且对于使用该模式的每个类都是不同的,但是API通常由请求委托如何处理特定事件的消息组成。委托模式比子类化的一个优点是,类可以实现多个委托协议,允许它的实例充当多个类的委托。类似地,对象实例可以是多个其他对象的委托(因此大多数委托API将对象作为API中每个消息的第一个参数传递)。代理模式在其他UI框架中并不常见(尽管Qt在其模型/视图框架中使用了委托模式),并且与.Net / CLR委托不同,后者本质上是类型化的函数指针。
数据源模式通常由Cocoa中具有复杂状态数据的NSVIEw子类使用,例如NSbrowser,NStableVIEw,NSOutlineVIEw等。数据源协议定义了一个API,这些(和其他)类的实例可以使用它来获取数据在视图中显示。虽然NSController和Cocoa Bindings架构已经取代了数据源模式的许多使用,但它仍然是常见的和非常强大的。与上面描述的委托模式一样,它的部分功能来自能够作为多个数据源使用实例(甚至可能是具有不同数据源协议的多个类的实例)的数据源的对象。数据源模式通常用在其他UI框架中,例如Qt(在模型/视图框架中,其中模型类似于数据源)和WPF / Silverlight(其中数据源可能更接近于视图模型)。
总结以上是内存溢出为你收集整理的可可 – 数据源和代理之间有什么区别?全部内容,希望文章能够帮你解决可可 – 数据源和代理之间有什么区别?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)