gpt4 book ai didi

iphone - Cocoa/Iphone 开发 - 目标/操作机制

转载 作者:行者123 更新时间:2023-12-03 17:00:09 25 4
gpt4 key购买 nike

我开始学习Iphone开发。当我阅读有关 cocoa 开发框架的内容时,出现了一些主要概念,并且伴随着一些困惑。我想确保我理解正确并得到一些澄清:

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

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

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

谢谢

最佳答案

Delegate - basically the strategy design pattern.

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

Target/action - This it where i'm mostly confused.

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

关于iphone - Cocoa/Iphone 开发 - 目标/操作机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3084712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com