没有协议的iOS代理?

时间:2017-01-21 15:47:50

标签: objective-c swift cocoa-touch design-patterns delegates

Apple授权代表团状态:

  

在Swift和Objective-C委托中, 通常表达   定义交互和符合代表的协议   属性

我不确定是否有任何其他方法来创建不“必须”涉及协议的代理。是否存在另一种在Swift或Objective-C中表示不涉及协议的委托方式?

2 个答案:

答案 0 :(得分:1)

代理人不必遵守协议。您可以编写实现代码,但这是不好的做法。

我认为苹果说这是通常的事情。您不必使用协议......但如果您想保持灵活性,则应该这样做。

代表团实质上是在请求其他人为您做点什么。如果你强制执行合同,那么他们更有可能为你做这件事。

答案 1 :(得分:0)

我完全同意以上答案,协议保证了两个对象之间的契约。如果没有协议,则无法确保以委托方式实现委托方法。

即使使用类而不是协议,也可能存在有关多重继承的问题,并且实现起来会很困难。这也导致对象之间的紧密耦合,并且内存管理变得困难。

但是,在我看来,您可以通过这种方式在没有协议的情况下实现委托:

  1. 忘记协议,一个委托和一个委托对象。
  2. 开发人员有责任在委托对象中实现所有必需的方法。
  3. 变量“ delegate”将是类类型,而不是协议类型。
  4. 在需要时直接调用适当的方法。