【问题标题】:Pushing and popping a view controller fast many times crashes快速推送和弹出视图控制器多次崩溃
【发布时间】:2015-10-13 11:05:35
【问题描述】:

我有一个视图控制器 A,其中有很多项目供用户选择。用户可以按下它,这将推动另一个视图控制器 B。 然后,用户可以返回选择的其他项目。

这在 90% 的情况下都很好,但是如果用户速度很快并且经常这样做,应用程序会崩溃并显示错误消息:

“因内存错误而终止”

.

这个视图控制器 B 很大,所以我不能真正发布任何代码,但我检查了保留对象,内存泄漏没有运气。我的理论是垃圾收集器无法跟上步伐,所以我可能不得不在我的对象周围包裹一个@autoreleasepool

你有什么好的想法/做法吗?

更新:

尝试这样做。取一个随机视图控制器并添加它

MKMapView *mapView = [[MKMapView alloc]initWithFrame: CGRectMake(100, 100, 500, 500)];
[self.view addSubview:mapView];

推这个视图控制器并弹出它。重复大约 15 次,应用就会崩溃。

【问题讨论】:

  • 你使用“pushViewController:View Animation:YES”吗?

标签: ios objective-c memory-management garbage-collection


【解决方案1】:

我通过添加一个后退按钮解决了这个问题,当按下这个按钮时,我手动删除了地图视图和参考。我原以为 iOS 会自动执行此操作,但这似乎对我有用。

【讨论】:

    猜你喜欢
    • 2014-07-09
    • 2011-01-21
    • 2012-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多