iOS 编程 : 'super dealloc' crashes app

标签 ios ipad autorelease dealloc popover

这是我第一次在这个网站上提问。作为一名业余开发人员,我总能在这个网站上找到我的问题的答案,但我找不到解决我当前问题的答案。

在我的 iPad 应用程序中,我从 rootView 调用了一个新的 UIViewController:

DisplayTheMapViewController_iPad *root = [[DisplayTheMapViewController_iPad alloc] init];
displayTheMapViewController=root;
[[self navigationController] pushViewController:displayTheMapViewController animated:YES];
[root release];

当我从该 View 返回到主视图时,应用程序崩溃(这需要一分钟左右的时间,在此之前一切正常,但它总是会发生),并出现自动释放池错误。

当我评论 [root release] 时,应用程序保持事件状态,但随后我遇到了一个不同的问题:在我第二次访问 View (不是第一次!)时,当调用一个在 View 中放置弹出窗口的方法时,应用程序崩溃,我收到以下错误:

“无法从没有窗口的 View 中显示弹出窗口。”

我一定做错了什么。提前感谢您的任何建议。

最佳答案

这一行有点令人费解:

displayTheMapViewController=root;

我猜 displayTheMapViewController 是一个实例变量?如果是这样,您将为其分配 root 权限,但不会保留 root 权限。当该 Controller 从导航堆栈弹出时,导航 Controller 将释放它,导致它被释放,因为没有其他东西保留它。 displayTheMapViewController 将指向一个无效的对象。也许你的意思是:

self.displayTheMapViewController=root;

如果 displayTheMapViewController property 设置为保留其内容,则可以防止上述悬空指针问题。

关于iOS 编程 : 'super dealloc' crashes app,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6579048/

相关文章:

objective-c - 为 PDF 查看器自动调整 UIViews 的大小

iphone - 我什么时候应该将我的代码包装到自动释放池中

objective-c - 释放和自动释放有什么区别?

ios - 无法调用参数列表类型

ios - 具有动态内容的 UIScrollView

iphone - 我可以在我的应用程序中列出 iPhone 应用程序吗?

iphone - 核心数据 : Creating Relationships

iphone - UIButton 在 InterfaceBuilder 中看起来不错,但在 iPad sim 或设备上则不然

objective-c - NSURLCache 与自动释放的对象一起崩溃,但在其他情况下会泄漏

iphone - 如何为 UIScrollView 中的内容区域设置背景颜色?