我不知道如何解决这个问题。
我有一个带有xib的Controller(ControllerA)。 在xib中我有一个自定义的UIView(UIViewA)。 UIViewA在我的所有其他xib作为页脚,并加载了awakeFromNib。
初始化代码如下:
-(void)awakeFromNib
{
[[NSBundle mainBundle] loadNibNamed:@"ICOMFooterView" owner:self options:nil];
[self addSubview:self.footerView];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receivedNotification:) name:@"downloadNotification" object:nil];
[self checkIsDownloading];
}
并在dealloc中:
- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:@"downloadNotification"];
}
问题出现在我导航到另一个控制器并返回时,它在UIViewA视图中给出了一个释放异常。我所看到的是,当我返回到我的第一个控制器时,调用dealloc并删除观察者...当视图再次出现时,有没有办法初始化通知?
我不知道我是否已经解释得很好。
提前谢谢你。
答案 0 :(得分:2)
这一行:
[[NSNotificationCenter defaultCenter] removeObserver:@"downloadNotification"];
应该是:
[[NSNotificationCenter defaultCenter] removeObserver:self];
因为参数是要作为观察者删除的对象,而不是通知的名称。
此错误将导致取消分配的视图未作为观察者被删除,因此下次发布通知时您将崩溃。