2013-03-28 21 views
0

我正在使用我的应用程序中的委托模式进行授权。id与定义委托属性时的类名称

@property (weak) id<Delegate> delegate; 

不会使它弱于说

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

我意识到我在第一个和要求任何指针:

大部分事情我以前使用像看到第二我期待一个打字指针。但我只希望我的委托是一个UIViewController或子类。

任何人都可以解释的差异和优点和缺点?

回答

3

但我只希望我的代表是UIViewController或子类。

然后进入第二种方式 - 第一种方式表明它可以是符合<Delegate>协议的任何对象。

+0

但他们都同样弱?对不起,只要确定我知道我在做什么。 –

+0

@j_mcnally定义“弱”。 – 2013-03-28 21:39:28

+0

__weak如不在ARC中作为代表应该是? –

0

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

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

既然你想这个属性是一个视图控制器,语义不仅仅是一个委托,所以我不会把它称为委托,而是一个xxxViewController与“xxx”是您的对象和该视图控制器之间的实际函数关系。