iOS - removeFromSuperview有时会崩溃应用程序

时间:2011-12-19 23:26:31

标签: ios

我有一个带有后退按钮的页面,可以将我带到收件箱。我在viewWillDisappear中执行此操作 -

-(void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
    [inboxToolbar removeFromSuperview ];
[inboxToolbar release];

}

如果我这样做几次,应用程序崩溃,抛出的异常是“无法识别的选择器发送到实例”。这种情况非常间歇性地发生。关于如何修复/调试它的任何想法?

3 个答案:

答案 0 :(得分:1)

假设崩溃正在访问您的inboxToolbar ivar,请将您的代码更改为以下内容:

-(void)viewWillDisappear:(BOOL)animated
{
   [super viewWillDisappear:animated];
   [inboxToolbar removeFromSuperview ];
   [inboxToolbar release];
   inboxToolbar = nil;
}

这将确保inboxToolbar不保留指向解除分配对象的指针。您还可能遇到其他问题,需要查看崩溃日志以及更多代码才能确定。

答案 1 :(得分:0)

尝试检查它是否会首先响应您的方法......

if ([inboxToolbar respondsToSelector:@selector(removeFromSuperview)]) {
    [inboxToolbar removeFromSuperview];
}

答案 2 :(得分:0)

添加一个异常断点以查看它被抛出的位置,您可能正在向一个不属于您认为的类的对象发送消息,在您停止异常断点后,您可以将鼠标悬停在变量上以查看它们属于哪些类。

如果这不能帮助发布实际消息,也许我们可以提供更多帮助,可能是iOS版本问题等。