В некоторых из моих учений я увидел, что кто-то упомянул, что в вашем контроллере вида вы можете иметь модель и иметь какой-то слушатель на модели для изменений в ней. Я не думаю, что я использую правильные имена для них, и, вероятно, поэтому мои поиски ничего не обнаружили. По сути, я хочу переместить вызовы своего сервера с контроллеров в свои модели, но мне нужен какой-то слушатель, чтобы узнать, когда вызов завершен, чтобы обновить мои представления.
IOS: что эквивалентно прослушивателю событий в Objective-C?
Ответ 1
изучить делегатов учебник для делегатов
или блокирует более продвинутый руководство по базовым блокам
только начинайте с делегатов,
вы также можете использовать NSNotification учебное пособие NSNotification, но не рекомендуется, поскольку он транслируется для каждого класса, и вам может потребоваться отправить сообщения только определенный класс не каждый
Ответ 2
Принадлежа к миру С#, мне нужно перейти к объекту c (для моей работы). Я думаю, что эквивалент события в объективе c - это реализация:
Создайте протокол со всеми вашими методами:
@protocol MyDelegate <NSObject>
- (void)myEvent;
@end
В своем классе, который должен отправить событие, добавьте:
@interface MyClassWichSendEvent : NSObject
@property (nonatomic, retain) IBOutlet id<MyDelegate> delegate;
@end
Поднятие события, в котором вы хотите, например:
- (IBAction)testEvent:(NSButton*)sender
{
[self.delegate myEvent];
}
Теперь в вашем классе слушателя вы должны прослушивать такие события:
Добавьте в свой класс протокол, который будет прослушивать
@interface Document : NSDocument<MyDelegate>
В реализации, в init или в построителе интерфейса, вы должны связать делегата экземпляра объекта с тем, чтобы прослушивать себя своего класса, который прослушивает.
В коде
-(void)awakeFromNib
{
myObjToListen.delegate = self;
}
- В интерфейсе Builder → IBOutlet от делегата к вашему классу прослушивания.
И, наконец, реализовать свой метод в классе слушателя:
- (void)myEvent
{
NSLog(@"i have listen this event !");
}
Извините за мой английский, я надеюсь, что помогите людям, которые перешли с java или С#.
Ответ 3
Вы ищете KVO-ключ/значение наблюдения:
http://nachbaur.com/2011/07/29/back-to-basics-using-kvo/
Делегаты + Уведомления хороши для связи между объектами, но они не отправляют автоматически сообщения при изменении значения (что из вашего вопроса, о чем вы спрашиваете)
Ответ 4
Я думаю, вы можете искать NSNotificationCenter, который может передавать сообщения тому, кто может слушать. Таким образом, вы можете отправить уведомление о событии в своей модели и просто послушать его в своих контроллерах. Более чистым способом может быть реализация собственного протокола с делегатами.
Ответ 5
Цель C использует делегаты
В этом сообщении есть хороший пример: Как создать делегаты в Objective-C?