7

で作成したカスタムUIViewにオブザーバーを追加しましたinitWithFrame:

[[NSNotificationCenter defaultCenter] addObserver:self 
         selector:@selector(updateZipFromLocation:) 
          name:@"zipFoundFromLocation" 
           object:nil];

問題は、このビューがサブビューであるということです。ビューが再度ロードされると、initWithFrameメッセージが再度呼び出され、2人のオブザーバーが追加されます。ビューが消えるときにオブザーバーを削除するにはどうすればよいですか?ですので、有効な方法UIViewではありません。viewWillDisappear:(BOOL)animated何か案は?

4

1 に答える 1

12

これは何度も呼び出されているとおっしゃっていたinitWithFrame:ので、これはビューが破棄されて再作成されていることを意味していると思います。のオブザーバーとしてビューを削除できますdealloc。これは、ビューが誰にも保持されなくなったときに呼び出されます。

- (void)dealloc {
    [[NSNotificationCenter defaultCenter] removeObserver:self];
    [super dealloc];
}
于 2010-12-23T02:49:40.243 に答える