Data Sources
Делегаты обычно добавляются в классы графического интерфейса. Источники данных являются аналогами делегатов, но добавляются в классы представления (NSView), работающие с данными. Их задачами является предоставление данных таким классам, как NSView и обработка запросов от пользователя на изменение данных.
Источник данных должен становиться владельцем данных, которые он передает в элементы интерфейса пользователя. Однако, обычно владеет он ими не долго, пока данные отображаются.
Implementing a Delegate for a Custom Class
1. В h-файл добавляется объявление делегата:
- (id)delegate;
- (void)setDelegate:(id)newDelegate;
2. В m-файл добавляется реализация методов доступа. Хост-класс не должен становиться владельцем делегата. Владельцем должен быть клиент хост-класса.
- (id)delegate {
return delegate;
}
- (void)setDelegate:(id)newDelegate {
delegate = newDelegate;
}
3. Добавить формальный или неформальный (категория NSObject) протокол к хост-классу.
4. Перед обращением к методу делегата проверить, что он его реализует.
- (void)someMethod {
if ( [delegate respondsToSelector:@selector(operationShouldProceed)] ) {
if ( [delegate operationShouldProceed] ) {
// do something appropriate
}
}
}
Комментариев нет:
Отправить комментарий