我正在研究我的应用程序中的授权委托模式。
我之前看到的大多数东西都使用类似的东西:
@property (weak) id<Delegate> delegate;
这是否使它比说的更弱
@property (weak) UIViewController<Delegate> *delegate;
我意识到我在第一个中要求任何指针,而在第二个中我期待一个类型化的指针。但我只希望我的委托是 UIViewController 或子类。
谁能解释一下区别和利弊?
我正在研究我的应用程序中的授权委托模式。
我之前看到的大多数东西都使用类似的东西:
@property (weak) id<Delegate> delegate;
这是否使它比说的更弱
@property (weak) UIViewController<Delegate> *delegate;
我意识到我在第一个中要求任何指针,而在第二个中我期待一个类型化的指针。但我只希望我的委托是 UIViewController 或子类。
谁能解释一下区别和利弊?
但我只希望我的代表成为一个
UIViewController
或子类。
然后走第二种方式——第一种表示它可以是任何符合<Delegate>
协议的对象。
没有真正的优点或缺点。只是合同不一样。一个说“我不在乎它是什么类,只要它符合该协议”,另一个说“我想要一个 UIViewController 的子类,它也符合该协议”。
这里唯一的一点是 Cocoa 中的“委托”模式的想法通常是为 API 的客户端提供一种创建对象的方法,该对象将自定义一个或多个其他组件的行为。
由于您希望此属性成为视图控制器,因此语义不仅仅是一个委托,所以我不会称它为委托,而是一个 xxxViewController,其中“xxx”是您的对象和该视图控制器之间的实际功能关系。