objective-c - 在objective-c中直接调用delegate的方法

标签 objective-c delegates

我创建了一个协议(protocol),要求类客户端实现一个方法。在客户端类中,我还需要执行此方法中定义的相同操作,而不仅仅是在委托(delegate)调用它时。我不认为复制粘贴代码是个好主意,但我也不知道直接在客户端类中调用此方法是否是一个好习惯。我在想也许委托(delegate)方法应该只由委托(delegate)调用。

我是否应该创建在委托(delegate)方法中调用的第三个方法以及何时需要它?或者,我可以直接调用委托(delegate)方法吗?

最佳答案

使用blocks 而不是delegates 来解决您的问题。 block 与委托(delegate)做同样的工作,只是它更干净,需要更少的管道工作(想想你必须在类和它们的委托(delegate)之间穿梭的所有那些实例变量/属性......在 block 中,所有信息都封装在 block 中),并且与 iOS/objective-c 社区的发展方向一致(您会发现许多高知名度的库正在发展以用 block 代替委托(delegate)和其他内容)。

如果您不熟悉 block 或者您发现它的古怪语法很烦人,here是一个用户友好的指南。

还有 here是一个很好的答案,它将基于 delegate 的解决方案与基于 block 的解决方案进行了比较,并说明了 block 解决方案如何比委托(delegate)解决方案更干净。

关于objective-c - 在objective-c中直接调用delegate的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18604180/

相关文章:

c# - 如果场景中的多个游戏对象使用该脚本,脚本中声明的公共(public)委托(delegate)是否一定是单个实例?

ios - UITableView 上未调用长按手势

objective-c - topViewController 错误(iOS7 - 适用于 iOS8)

ios - 如何在 Xcode 中获取表格主题的详细信息?

c# - 如何让委托(delegate)引用方法的特定版本?

c# - 使用委托(delegate)在 C# 中实现的观察者模式?

objective-c - AudioUnit:从 CocoaView 访问 ComponentKernel 属性

iphone - 停止从新线程加载照片

ios - 将所有 TextField 委托(delegate)添加到 UIView 的简单方法?

c# - 委托(delegate)的演变