在 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 可以执行操作吗?