0
私は次のことをAViewControllerで行います。私にはクラッシュがあります。私のクラスはなぜ通知を受け取るのですか?
[self.navigationController popViewControllerAnimated:NO];
[[AppDelegate delegate].tabBarController setSelectedIndex:1];
AViewControllerの割り当てが解除され、BViewControllerは(それが最初のタブである)が登場します。
私はクラッシュしました。
1)AViewController callesのdealloc
2)BViewControllerが送信通知
3)私はなぜAViewControllerがntf_onRotation通知を受け取るん
AViewController
の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
私はdeallocにNSLogを追加しました。私はそれが呼ばれたのを見た。 AViewControllerの保持カウントがゼロに等しいことを意味します。 – Voloda2