【问题标题】:iOS open source smart controller push/pop lib for uinavigationcontroller?用于 uinavigationcontroller 的 iOS 开源智能控制器推送/弹出库?
【发布时间】:2014-06-23 19:07:17
【问题描述】:
我有一个应用程序,用户可以在其中无限深入地推送视图(推送到导航堆栈)。在某些时候,会出现内存警告。我想从导航控制器中删除视图控制器并释放它们。如果用户回到那些视图控制器,我想重新创建视图控制器并将它们推回到堆栈中的正确位置。
这是思考这个问题的正确方法吗?
是否有这样做的开源项目?这似乎不是一个罕见的问题,我宁愿不重新发明轮子。
【问题讨论】:
标签:
ios
objective-c
uinavigationcontroller
【解决方案1】:
曾几何时,您需要确保对viewDidLoad 和viewDidUnload 的调用正确匹配,以便可以通过这种方式处理内存警告。从 iOS 6 开始,这不再需要。
正如viewDidUnload 的文档中所说:
在 iOS 5 及更早版本中,当发生内存不足的情况并且
不需要当前视图控制器的视图,系统可以选择
在视图控制器的视图被调用后调用此方法
释放。这种方法是您执行任何最终清理的机会。如果
您的视图控制器存储了对视图或其
子视图,您可以使用此方法释放这些引用。你
也可以使用此方法删除对任何对象的引用
您创建以支持视图,但现在不再需要
视图消失了。您不会使用此方法发布用户数据
或任何其他无法轻松重新创建的信息。
在 iOS 6 及更高版本中,清除对视图和其他对象的引用
你的视图控制器是不必要的。
如果您手动将大型对象保存在内存中,例如图像或视频数据,那么您可以覆盖 didReceiveMemoryWarning 以在必要时释放这些对象。