自定义UIView in xib通知dealloc错误

时间:2014-04-28 10:29:06

标签: ios uiview uiviewcontroller xib nsnotificationcenter

我不知道如何解决这个问题。

我有一个带有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并删除观察者...当视图再次出现时,有没有办法初始化通知?

我不知道我是否已经解释得很好。

提前谢谢你。

1 个答案:

答案 0 :(得分:2)

这一行:

[[NSNotificationCenter defaultCenter] removeObserver:@"downloadNotification"];

应该是:

[[NSNotificationCenter defaultCenter] removeObserver:self];

因为参数是要作为观察者删除的对象,而不是通知的名称。

此错误将导致取消分配的视图未作为观察者被删除,因此下次发布通知时您将崩溃。