当用户深入导航控制器堆栈视图时,我的应用程序接收到低内存警告时遇到问题.在用户浏览后续UITableViews中的一堆分层选项后,他可以在UIWebView中打开PDF文档(在不同的视图控制器中).
一切正常,PDF加载,用户可以浏览页面.但是,当文档有点大,或者有多个页面,并且用户点击导航控制器中的"后退"按钮时,他的应用程序崩溃,因为导航控制器堆栈中的先前视图控制器已被解除分配.
在寻找处理低内存警告的方法以及处理这类问题之后,我发现了一些帖子,建议人们释放可以释放的对象,然后在用户尝试时稍后加载它们.加载已解除分配的视图.其中一篇文章是Craig Hockenberry的" 处理记忆丧失:清理帖子".
虽然这有点帮助,但它并没有给我很多信息.
有人可以提供一个关于如何处理低内存警告的简单指南,以及如何实现对象的"延迟加载"?
当内存不足时,系统会发出一系列与内存相关的消息.任何实例化的视图控制器都将获得-didReceiveMemoryWarning消息.如果不实现此操作,则默认操作(假设视图控制器不是最前面的)是释放控制器的视图成员.如果您有钩子,或者可能进入其子视图,那么当您的控制器返回到堆栈顶部时,这可能会导致问题.