В AViewController я делаю следующее.У меня крушение. Почему мой класс получает уведомление?
[self.navigationController popViewControllerAnimated:NO];
[[AppDelegate delegate].tabBarController setSelectedIndex:1];
AViewController будет высвобождена, и будет появляться BViewController (это первая вкладка).
У меня есть авария.
1) AViewController Кальес dealloc
2) BViewController посылает уведомление
3) Я получаю сбой в методе onRotation из AViewController
Почему AViewController получать уведомления ntf_onRotation? Я добавил методы removeObserver.
Мои классы
@implementation AViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(onRotation:)
name:@"ntf_onRotation"
object:nil];
}
-(void) viewDidUnload
{
[super viewDidUnload];
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"ntf_onRotation" object:nil];
}
- (void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"ntf_onRotation" object:nil];
[super dealloc];
}
@end
@implementation BViewController
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[[NSNotificationCenter defaultCenter] postNotificationName:@"ntf_onRotation" object:nil];
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[[NSNotificationCenter defaultCenter] postNotificationName:@"ntf_onRotation" object:nil];
}
@end
Проверили ли вы все еще ссылки на AViewController? Если AViewController все равно получает уведомления, это означает, что AViewController жив. – beryllium
Я добавил NSLog в dealloc. Я видел, что это называется. Это означает, что показатель сохранения AViewController равен нулю. – Voloda2