簡體   English   中英

與一些Objective-C協議混淆

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM