我正在申请授权的委托模式。
我以前见过的大多数事情都是这样的:
@property (weak) id<Delegate> delegate;
这会使它比说
弱吗?@property (weak) UIViewController<Delegate> *delegate;
我意识到我要求第一个中的任何指针,而第二个我期待一个打字指针。但我只希望我的委托成为UIViewController或子类。
任何人都可以解释这些差异和利弊吗?
答案 0 :(得分:3)
但我只希望我的委托成为
UIViewController
或子类。
然后转到第二种方式 - 第一种方式表示它可以是符合<Delegate>
协议的任何对象。
答案 1 :(得分:0)
没有真正的利弊。合同是不同的。一个人说“我不关心它是什么类,只要它符合该协议”,另一个说“我想要一个符合协议的UIViewController的子类”。
这里唯一的一点就是Cocoa中“委托”模式的想法通常是为API的客户提供一种创建对象的方法,该对象将自定义一个或多个其他组件的行为。
由于您希望此属性是视图控制器,因此语义不仅仅是委托,因此我不会将其称为委托,而是将xxxViewController称为“xxx”,它是对象与该视图控制器之间的实际功能关系。