Cocoa / Iphone dev - 目标/动作机制

时间:2010-06-21 12:42:41

标签: iphone cocoa design-patterns macos

我开始学习Iphone开发。 正如我在阅读有关可可开发框架的内容时,很少有主要概念出现,并且有一些混乱。 我想确保我理解正确的事情并得到一点澄清:

委托 - 基本上是战略设计模式。我设置了我的类委托和数据源(也是一个类似委托的对象),后来又设置了那些委托对象的调用方法。

通知 - 基本上是观察者设计模式,其中委托自动注册到所有委托对象通知。

目标/行动 - 这是我最困惑的地方。 UI对象有“SetAction”和“SetTarget”方法。 据我所知,如果我使用IB连接方法(通过拉伸UI对象与文件所有者之间的一行),方法就是操作,文件所有者就是目标。 这是否意味着必须将所有UI方法(事件)定向到同一个目标? (因为我只有SetTarget方法,它不接受Selector或类似的另一个参数)。有关行动的问题仍然存在。如果一次只有一个动作(如函数SetAction暗示),如何将多个方法之间的线拉伸到一个文件所有者。 我想了解这种机制是如何运作的。

由于

1 个答案:

答案 0 :(得分:3)

  

代表 - 基本上是战略设计模式。

我不同意。策略模式使用委托,但涉及的不仅仅是Cocoa理解为委托。如果你有四人帮的书:它在引言中讨论授权(第20-21页)。但我认为你基本上是正确的:委托对象调用其委托上的方法,要么通知它(状态改变,事件),要么向代表询问数据或是否/如何继续。重要的是委托和委托对象只是松散耦合:在实现委托对象时,您不必关心委托的类。

  

目标/行动 - 这是我最困惑的地方。

具有setTarget:setAction:方法的对象通常只有一个操作/事件(例如UIBarButtonItem,它只响应一个事件:单击一次)。否则,该类应支持为不同事件设置不同的目标/操作。请参阅UIControl及其子类作为示例。在那里,您可以使用-addTarget:action:forControlEvents:分配目标/操作对,并且可以为不同的事件分配多个目标,并为同一事件分配多个目标。