可可 – 数据源和代理之间有什么区别?

可可 – 数据源和代理之间有什么区别?,第1张

概述我有一个与Cocoa框架设计模式相关的基本问题。 代理和数据源之间有什么区别? 两者都可以使用@protocols声明,但是一些类或框架使用委托,另一些则使用数据源。 所有我可以从UI / NSTableView了解是委派响应UI相关的事件,而数据源纯粹与数据相关。但是,我不知道任何数据源实现外面的可穿戴类的Cocoa。 注意: >我在这个问题中提到的委托并不总是与UI事件相关。 >数据源问题已回 我有一个与Cocoa框架设计模式相关的基本问题。

代理和数据源之间有什么区别?

两者都可以使用@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(其中数据源可能更接近于视图模型)。

总结

以上是内存溢出为你收集整理的可可 – 数据源和代理之间有什么区别?全部内容,希望文章能够帮你解决可可 – 数据源和代理之间有什么区别?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1044576.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存