0

我的应用程序[super dealloc]; 在线崩溃,并且在- (void)dealloc我释放所有保留在 .h 类中的对象的方法中,崩溃报告是

-[__NSArrayI respondsToSelector:]: message sent to deallocated instance 0x86fb1a0
-[__NSArrayI respondsToSelector:]: message sent to deallocated instance 0x86fb1a0
-[__NSArrayI respondsToSelector:]: message sent to deallocated instance 0x86fb970
-[UIButton release]: message sent to deallocated instance 0x9b914b0

但是当我阻止[super dealloc];此行代码时发生的事情完美无缺,但它给了我警告Method possibly missing [super dealloc] call。如果有人知道,请帮助我在哪里做错了。提前致谢。

已编辑

 [_gf_Knowledge_ratingStars release];
[_gf_Range_ratingStars release];
[_quality_ratingStars release];
[_atmosphere_ratingStars release];
[_reviewtxt release];
[_whatsGoodHere release];
[_saveButton release];
[_screen_title release];
[_commentImageView release];
[_resturantBGImageView release];
[_textViewPlaceholder release];
[_gFKnowledgeUnselectBtn release];
[_gFRangeUnselectBtn release];
[_gualityUnselectBtn release];
[_atmosphereUnselectBtn release];
[_gFKnowledgeLbl release];
[_gFRangeLbl release];
[_gualityLbl release];
[_atmosphereLbl release];
[_navbarImageView release];
[_btnBack release];
[super dealloc];
4

7 回答 7

3

我认为您正在 NSArray使用arrayWithArray静态方法分配内存。

通过这种方式,它被添加到自动释放池中,并且保留计数将为 0。保留它或手动alloc使用[[NSArray alloc] init]

于 2013-05-17T06:54:35.123 回答
2

如果您两次释放一个对象,就会发生这种情况。请检查所有版本并删除任何重复。

于 2014-03-13T06:48:22.770 回答
1

确保这一行 ( [super dealloc];) 是dealloc方法中的最后一条语句,我认为您已经为其他类变量编写了 release 之后[super dealloc]

于 2013-05-17T07:03:30.610 回答
0

我认为问题是您创建的按钮之一

UIButton* btn = [UIButton buttonWithType:UIButtonTypeCustom];

然后你在 dealloc 方法中释放。尝试评论所有声明如上的按钮。

于 2013-05-17T07:15:30.133 回答
0

首先在您的应用程序中启用僵尸

怎么做 ??请通过这个。

如何在 Xcode 中启用 NSZombie?

现在,当您的应用程序崩溃时,您将知道您的应用程序在哪一行崩溃。检查有问题的对象有什么标识符。(保留或分配),检查是否在沿线的某个点为它分配了一个自动释放对象,检查您是否使用合成的 setter 和 getter 来分配这些值或将它们直接分配给属性。如果您合成了一个属性,您应该始终使用 (.) 点运算符来设置和获取值。

至于你连接的插座。请检查他们有什么标识符。(保留或分配)。

于 2013-05-17T08:54:25.823 回答
0

您已经两次释放了任何变量,我认为您已经在 [super dealloc] 之后为其他类变量编写了释放。

于 2013-05-18T06:15:04.233 回答
0

问题是您正在释放作为 NIB 的一部分加载的 UI 对象。

黄金法则:不要发布任何你没有分配给自己的东西。

于 2013-05-17T06:57:44.630 回答