2012-02-25 49 views
0

從我的理解中,代理類是始終從NSResponder類繼承的類,而delegate僅適用於繼承自NSResponder的類。 NSMenu直接從NSObject繼承,那麼爲什麼我會在outlets中看到deletgate? 或者是我誤解了按住Ctrl鍵並單擊Interface Builder中的某個對象後所看到的選項?我看到Outlets,Referencing outlets,Received Actions,這些是什麼意思呢? 我正在使用Xcode 4(10.7.3),如果這很重要。NSMenu中的代理成員

回答

0

我不知道你在哪看到這個,但它完全和完全不正確。委託只是一種模式,對可以實現委託的對象的類型沒有限制。

事實上,我們鼓勵您在您自己的類中使用委託模式。

NSMenu聲明其delegate屬性作爲標題中的出口,這就是爲什麼您在Interface Builder中看到它的原因。你可以做同樣在自己的代碼如下所示:

@interface YourObject : NSObject {} 
@property (weak) IBOutlet id delegate; 
@end 

在Interface Builder中,Outlets是指在類的頭中定義的網點,並可以連接到其他對象。 Referencing OutletsReferencing Actions連接其他物體您的對象。

+0

現在回到蘋果文檔,我意識到我錯了,我沒有閱讀「經常」這個詞。 '的委託對象通常是響應對象,也就是說,一個對象 在 UIKit的 - 即響應於用戶事件從NSResponder類在AppKit框架或UIResponder繼承。代表是 對象,該對象被委派控制該事件的用戶界面,或者至少要求以特定於應用程序的方式解釋事件。 – PnotNP 2012-02-25 02:32:26