Friday, 5 September 2008

В контексте Cocoa интеесны следующие Objective-C расширения:

Categories:
Механизм, позволяющий добавить реализацию к существующему классу, не наследуясь от него. Например, можно добавить метод к базовому классу иерархии и, таким образом, получить новую функциональность всех библиотечных класов [не выглядит ОО ;-)]

Protocols:
По сути, это интерфейс. Бывают двух видов формальные и неформальные. Неформальные - это категории (см. пункт 1), а формальные - честные.

Соответственно, ключеые слова
@optional
@required
позволяют помечать методы интерфейса, как обязательные или не обезательные к реализации в классах наследниках.

NB:
Что-то типа generics:
- (void)draggingEnded:(id )sender;
// Аргумент может быть любого типа, должен реализовывать NSDraggingInfo протокол


No comments: