我在initWithFrame:
下创建的自定义UIView中添加了一个观察者。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(updateZipFromLocation:)
name:@"zipFoundFromLocation"
object:nil];
问题是,这个视图是一个子视图。再次加载视图时,它再次调用initWithFrame消息,从而添加两个观察者,依此类推。当视图消失时,如何移除观察者?由于它是UIView
,因此它表示viewWillDisappear:(BOOL)animated
不是有效的方法。有什么想法吗?
答案 0 :(得分:12)
您已经说过initWithFrame:
不止一次被调用,所以我认为这意味着视图正在被销毁并重新创建。您可以在dealloc
中以观察者的身份删除视图,当任何人不再保留视图时,系统会调用该视图:
- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
[super dealloc];
}