-[UIViewControllerWrapperView 框架]:发送到释放实例的消息在 IOS7 中崩溃

Posted

技术标签:

【中文标题】-[UIViewControllerWrapperView 框架]:发送到释放实例的消息在 IOS7 中崩溃【英文标题】:-[UIViewControllerWrapperView frame]: message sent to deallocated instance getting Crash in IOS7 【发布时间】:2013-08-07 02:26:04 【问题描述】:

我的项目是为 ios5 和 6 制作的。在 IOS7 发布后,我们也在升级我们的 IOS7 项目。但是我在 IOS7 中遇到了一个问题。

当我第一次在 IOS7 模拟器中安装我的应用程序时,它会崩溃并显示以下消息。

*** -[UIViewControllerWrapperView frame]: message sent to deallocate

但在 IOS7 下它工作正常。 谢谢

【问题讨论】:

它是测试版。它有一些疯狂的错误。不要修复,因为您将在发布后修复您的修复。 我遇到了同样的问题。你找到解决办法了吗? 是的。如果我们弹出导航控制器,这通常会发生。但我仍然无法解决问题。希望有人提出解决方案。 你在哪里调用这个方法......!实际上,现在在 iOS 7 中,呈现和关闭视图控制器在不同的视图中工作。在进行任何与视图相关的调用之前,您必须确保您的视图在内存中。 【参考方案1】:

OS 7 确实改变了一些关于 tableviews 及其委托的规则。当然,这不是在容易找到的地方突出显示的。

但基本上,在早期版本的 iOS 中,您可以选择取消 tableView 委托和数据源。不这样做不会发送任何错误消息。

从 iOS 7 开始,您必须在您的 dealloc 中将它们设为 nil,否则可能会导致此崩溃。

- (void)dealloc

fetchedResultsController.delegate = nil;
self.searchDisplayController.delegate = nil;
self.searchDisplayController.searchResultsDelegate = nil;
self.searchDisplayController.searchResultsDataSource = nil;
self.tableView.delegate = nil;
self.tableView.dataSource = nil;    

如果这解决了您的问题,请告诉我。

【讨论】:

【参考方案2】:

苹果改变了类的层次结构。 所以,iOS6 和 iOS7 中的 UiSearchbar 子视图是不同的。 iOS7的UiTextField下面直接是UiSearchBar的子视图,而iOS7的UiSearchBar的子视图是UIView,然后UITextField是UIView的子视图。

所以相同的代码在 iOS7 中无法运行并崩溃。

【讨论】:

以上是关于-[UIViewControllerWrapperView 框架]:发送到释放实例的消息在 IOS7 中崩溃的主要内容,如果未能解决你的问题,请参考以下文章