Я пытаюсь узнать, как реализовать шаблон делегирования в цели C. Но обсуждение почти исключительно сосредоточено на принятии протоколов и затем реализации методов делегата , которые идут с конкретный протокол - или - только принцип делегирования - или только протоколы.
То, что я не могу найти, это простой для понимания материал о том, как написать класс, который будет выполнять функции делегатора. Под этим я подразумеваю класс, из которого поступит сообщение о каком-либо событии и который предоставит протокол для получения этого сообщения - своего рода описание 2 в 1. (протоколы и делегирование).
В целях обучения я хотел бы пойти по следующему тривиальному примеру, используя iPhone, сенсорное приложение Cocoa и Xcode4.2, используя ARC, без раскадровки или NIB.
Давайте иметь класс с именем «Delegator», который является подклассом NSObject. Класс Delegator имеет переменную экземпляра NSString с именем «report» и принимает протокол UIAccelerometerDelegate. В реализации Delegator я буду реализовывать метод делегата
-(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
Этот метод делегата создаст NSString @ "myReport" и сохранит его в переменной отчета каждый раз, когда происходит событие акселерометра. Кроме того, я хочу иметь второй класс с именем ReportsStorage (подкласс NSobject), который может хранить некоторую Nsstring (отчет) в своей переменной экземпляра с именем latestReport.
Все идет нормально.
Теперь вернемся к классу Delegator. Я хотел бы реализовать в Делегаторе протокол с именем ReportsDelegate, который уведомит класс, который его принимает (класс ReportsStorage), о том, что отчет был сгенерирован, и пропустит этот отчет через метод делегата, который должен быть (я считаю) чем-то вроде это
-(void)delegator:(Delegator *)delegator didCreateNewReport:(NSString *)report;
Не могли бы вы предоставить код для класса Delegator (в том числе свойство «делегат»), который достигнет этого, с описанием того, что означает каждая строка кода?
Заранее спасибо, ЭрлГрей