Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 委托是否类似于mvc控制器?_Cocoa_Model View Controller_Delegates_Controller - Fatal编程技术网

Cocoa 委托是否类似于mvc控制器?

Cocoa 委托是否类似于mvc控制器?,cocoa,model-view-controller,delegates,controller,Cocoa,Model View Controller,Delegates,Controller,我看到这篇文章: “委托==控制器 “委派”和“控制器”这两个词可以同义使用……” 我不确定他在说什么,但在编程方面,我比我更了解mvc 这两个代理相似吗?代理是运行以捕获事件的后台进程。它们是控制器,因为您可以从我们友好的MVC软件工程动态中识别它们。一个事件可能是按钮按下屏幕触摸震动等。。。。代表是Cocoa用来区分的词,正如《如何指导》一书的作者所说,它使它们“可互换”。希望这能有所帮助他们真的处于不同的水平 使用委托的类是一个类(任何类),其设计目的是使自定义行为可以由另一个对象提供,

我看到这篇文章:

“委托==控制器 “委派”和“控制器”这两个词可以同义使用……”

我不确定他在说什么,但在编程方面,我比我更了解mvc


这两个代理相似吗?

代理是运行以捕获事件的后台进程。它们是控制器,因为您可以从我们友好的MVC软件工程动态中识别它们。一个事件可能是按钮按下屏幕触摸震动等。。。。代表是Cocoa用来区分的词,正如《如何指导》一书的作者所说,它使它们“可互换”。希望这能有所帮助

他们真的处于不同的水平

使用委托的类是一个类(任何类),其设计目的是使自定义行为可以由另一个对象提供,而不是(比如)通过子类化

e、 g.大多数Cocoa应用程序在应用程序启动时都会想做一些定制的事情(如果没有,那就太无聊了)。不是要求每个Cocoa应用程序实现一个自定义的
NSApplication
子类来覆盖
–applicationWillFinishLaunching:
NSApplication
的设计是,如果您将它的
委托
属性设置为有效对象,该对象有一个
–applicationWillFinishLaunching:
方法,它将调用该方法

这样,您就可以在设置中使用您喜欢的任何类,而不必使其成为NSApplication的子类

许多Cocoa类都是这样工作的,这意味着您几乎不需要对它们进行子类化来添加自定义行为。在其他一些语言和框架中,添加自定义行为的方式应该是子类化。想要java中的自定义按钮吗?只需创建一个扩展JComponent并实现MouseListener的新类,然后重写mouseClicked等。这不是Cocoa的方法

如您所知,控制器是负责协调模型和视图的对象

事实上,如果您需要向模型对象或视图对象的实例添加自定义行为(例如,您有一个NSTableView对象,并且您希望在选中一行时添加自定义行为),那么您可能已经有一个自定义控制器对象,而这通常是放置代码的最佳位置。只需设置TableView的.delegate=controller。我们可以看到tableView有一个委托方法
-tableViewSelectionDidChange:
您不必创建NSTableView的子类

我不认为这意味着一个委托人和一个控制器是完全一样的。