По сути, у меня есть view1, который в какой-то момент вызывает view2 (через presentModalViewController:animated:
). Когда определенная UIButton
в view2 нажата, view2 вызывает метод уведомления в view1 и сразу после этого отклоняется. Метод уведомления выскакивает предупреждение.
Метод уведомления работает нормально и вызывается соответствующим образом. Проблема в том, что каждый раз, когда создается view1 (за один раз должен существовать только один view1), я, вероятно, получаю еще один созданный NSNotification
, потому что если я перейду из view0 (меню) в view1, то назад и вперед несколько раз, Я получаю серию одного и того же предупреждающего сообщения, одно за другим, из метода уведомления столько раз, сколько открывал представление1.
Вот мой код, скажите, пожалуйста, что я делаю не так:
View1.m
-(void) viewDidLoad {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(showAlert:)
name:@"alert"
object:nil];
}
-(void) showAlert:(NSNotification*)notification {
// (I've also tried to swap the removeObserver method from dealloc
// to here, but it still fails to remove the observer.)
// < UIAlertView code to pop up a message here. >
}
-(void) dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
[super dealloc];
}
View2.m
-(IBAction) buttonWasTapped {
[[NSNotificationCenter defaultCenter] postNotificationName:@"alert"
object:nil];
[self dismissModalViewControllerAnimated:YES];
}
-(void) dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
[super dealloc];
}