在 ios 7 和 ios9+ 中关闭 ViewController 的异常行为

Posted

技术标签:

【中文标题】在 ios 7 和 ios9+ 中关闭 ViewController 的异常行为【英文标题】:Unusual behaviour of dismissViewController in ios7 and ios9+ 【发布时间】:2016-12-08 05:48:45 【问题描述】:

我正在开发一个应用程序。在应用程序的某个特定阶段,我将关闭 ViewController 并创建一个新的。我使用以下内容来解雇,

[self dismissViewControllerAnimated:NO completion:nil];

ios9+ 设备上运行良好。但是应用程序在 ios7 设备中崩溃。我换了,

[self dismissViewControllerAnimated:YES completion:nil];

那么它在所有版本的设备上都可以正常工作。谁能告诉我,为什么该应用程序之前在 ios7 设备上崩溃了,为什么它在 ios9+ 设备上运行完美?

【问题讨论】:

你能显示崩溃报告吗 EXC_BAD_ACCESS(代码=1,地址=...)。但是在 ios9+ 设备上没有崩溃,在相同的代码上。 你能分享你完整的函数代码吗? 【参考方案1】:

我认为这与内存管理有关。

解决方法是在dealloc方法中将所有delegate和数据源设置为nil。

在 iOS 7 及更高版本中,将委托和数据源设置为 nil 被认为是一种很好的做法,因为视图的生命周期比它们的视图控制器更长,并在它们被释放后尝试访问它们的委托。

【讨论】:

以上是关于在 ios 7 和 ios9+ 中关闭 ViewController 的异常行为的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 7 或更高版本中关闭应用程序时,iOS 可以执行操作吗?

在 iOS 7 SDK 中关闭 UIAlertview 后 UIView 没有响应

我是不是需要在 Java 中关闭 IO 流? [复制]

我需要弄清楚如何在 iOS 8 中关闭徽章、声音和警报

在 iOS 上的 Fine-uploader 中关闭相机

iOS 应用程序在 swift 中关闭视图后冻结