[英]confusion with some objective-c protocols
我下載了名為adium的應用程序的源代碼,因為我想通過仔細檢查其他人的代碼來更好地學習可可,但是在此界面中,我有些困惑:
@interface AIAdium : NSObject <AIAdium, SUVersionComparison> {
@private
IBOutlet NSObject <AIMenuController> *menuController;
IBOutlet NSObject <AIInterfaceController> *interfaceController;
IBOutlet SUUpdater *updater;
NSObject <AIAccountController> *accountController;
NSObject <AIChatController> *chatController;
NSObject <AIContactController> *contactController;
NSObject <AIContentController> *contentController;...
這樣下去。 我不明白的是NSObjects如何符合AIAccountController之類的協議。 我以為您必須實現在協議接口中定義的方法以使其符合標准,但是NSObject怎么做呢?
這些行不是什么意思。 例:
NSObject <AIAccountController> *accountController;
這意味着accountController
ivar是指向任何NSObject
派生類的指針,該類也符合AIAccountController
協議。
由於NSObject
是大多數其他類的根類,因此從根本NSObject
,這意味着可以將符合協議的任何自定義類分配給ivar。
關於這一行,與NSObject
本身無關。
該代碼的作者應使用的是:
id<AIAccountController> accountController;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.