ios:ARC中的过度释放对象[关闭]

Posted

技术标签:

【中文标题】ios:ARC中的过度释放对象[关闭]【英文标题】:ios: over release object in ARC [closed] 【发布时间】:2015-09-22 08:40:28 【问题描述】:

我在我的项目中使用 ARC。

在取消分配自定义视图期间,我的应用程序有时会崩溃。我认为该对象之前已经被释放,但自动释放池尝试再次释放它。

导致问题的原因是什么?我想我没有在多线程中访问视图对象。

Crashed: com.apple.main-thread
EXC_BAD_ACCESS KERN_INVALID_ADDRESS at 0x00010012

0  CoreFoundation   CFRelease + 17
8  UIKit -[UIView dealloc] + 1420
9  mypreoject QuestionPage.m line 29 -[QuestionPage dealloc]
10 libobjc.A.dylib  (anonymous namespace)::AutoreleasePoolPage::pop(void*) + 388
16 UIKit UIApplicationMain + 144
17 mypreoject   main.m line 13 main
18 libdyld.dylib start + 2

【问题讨论】:

【参考方案1】:

查看 QuestionPage.m 第 29 行。你看到那里有什么可疑的地方吗?

另一个建议是使用 Instruments 来调试内存错误,但如果您使用 ARC,我怀疑是否有任何错误。

另外值得一提的是进入应用的构建设置并确保实际使用了 ARC。

【讨论】:

对不起,我忘记发布代码了。 QuestionPage.m 中的第 29 行是 [[NSNotificationCenter defaultCenter] removeObserver:self] 之后的“”。

以上是关于ios:ARC中的过度释放对象[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

iOS:释放正在使用的对象 (ARC)

Xcode设置

为什么java io流必须得关闭

如何使用 ARC 在 iOS 中处理自动释放的对象

iOS 6.0需要在ARC下释放GCD队列吗?

iOS 多线程,ARC