2013-03-28 22 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」是您的對象和該視圖控制器之間的實際函數關係。