2012-03-12 1 views
0

В 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 
+0

Проверили ли вы все еще ссылки на AViewController? Если AViewController все равно получает уведомления, это означает, что AViewController жив. – beryllium

+0

Я добавил NSLog в dealloc. Я видел, что это называется. Это означает, что показатель сохранения AViewController равен нулю. – Voloda2

ответ

0

Это должно удалить всех наблюдателей, в том числе каких-либо неизвестных из них:

[[NSNotificationCenter defaultCenter] removeObserver:self]; 

 Смежные вопросы

  • Нет связанных вопросов^_^