0

我正在研究我的应用程序中的授权委托模式。

我之前看到的大多数东西都使用类似的东西:

@property (weak) id<Delegate> delegate;

这是否使它比说的更弱

@property (weak) UIViewController<Delegate> *delegate;

我意识到我在第一个中要求任何指针,而在第二个中我期待一个类型化的指针。但我只希望我的委托是 UIViewController 或子类。

谁能解释一下区别和利弊?

4

2 回答 2

3

但我只希望我的代表成为一个UIViewController或子类。

然后走第二种方式——第一种表示它可以是任何符合<Delegate>协议的对象。

于 2013-03-28T21:30:22.450 回答
0

没有真正的优点或缺点。只是合同不一样。一个说“我不在乎它是什么类,只要它符合该协议”,另一个说“我想要一个 UIViewController 的子类,它也符合该协议”。

这里唯一的一点是 Cocoa 中的“委托”模式的想法通常是为 API 的客户端提供一种创建对象的方法,该对象将自定义一个或多个其他组件的行为。

由于您希望此属性成为视图控制器,因此语义不仅仅是一个委托,所以我不会称它为委托,而是一个 xxxViewController,其中“xxx”是您的对象和该视图控制器之间的实际功能关系。

于 2013-03-28T21:38:35.130 回答