Действительно ли делегаты категории в Objective-C? - PullRequest
1 голос
/ 08 октября 2011

Я пытаюсь понять неформальные протоколы, до сих пор я знаю, что неформальные протоколы являются своего рода категорией, но почему у делегатов нет названия категории?

Пример:

#import <Cocoa/Cocoa.h>

@class FileSystemNode;

@interface AppController : NSObject { // Where is the Category ????  
@private
    IBOutlet NSBrowser *_browser;
    FileSystemNode *_rootNode;
}

@end

Спасибо.

1 Ответ

1 голос
/ 08 октября 2011

Неофициальные протоколы не"своего рода категория".

Если класс соответствует протоколу (например, @interface MyClass <MyProtocol>), гарантируется, что вы можете вызывать все методы втот класс, который требуется для MyProtocol.(Если класс действительно не реализует их [компоновщик не может знать об этом из-за динамического связывания], что является ошибкой программирования и ложью, но обычно это не так.)

Категории наС другой стороны, вы можете взять уже существующий класс и расширить его новыми методами (например, добавив метод removeAllSubviews к уже существующему классу NSView).


Итак, категории и протоколысовершенно противоположны друг другу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...