的iOS:卸载和弹出视图控制器

问题描述:

我有最后的阶段,即用户“拯救”他在阶段已经进入了所有数据之前,那里有对彼此顶部几个视图控制器的应用程序。在进入数据阶段,允许用户返回并更改一些数据。但是我想发布一些数据结构,因为它们消耗了大量的内存。因为当设备处于低内存,它只被称为我不能在viewdidunload释放。我也不能在viewDidDisappear释放它,因为如果用户想回去换东西的数据不会在那里。的iOS:卸载和弹出视图控制器

我认为这样做的方法是将viewcontrollers的指针设置为先前的视图控制器,然后在指向前一视图控制器的指针上调用释放函数以释放内容。

我如何做到这一点?

我觉得我把类似

#import "SomeViewController.h" 

@property SomeViewController someViewController; 

.h文件?我不确定该从哪里出发。

+0

您使用哪种视图层次结构?导航控制器? – Alexander 2012-08-17 15:14:43

如果使用太多的内存,系统会处理,对于你,以更有效的方式,任何DIY系统。这就是为什么记忆警告,ARC,游泳池和所有其他好东西首先出现在那里的原因。所以我会建议你不想做什么,并且相应地处理记忆力的问题。 顺便说一下,请注意,在您的viewControllers中存储数据不是一个好习惯,您应该将数据结构保存在单独的对象中(如MVC所示)。例如,您可以将数据保存在单个对象中,以便您可以从每个视图控制器访问,这样您就可以释放不再需要的内存,而不会保留指向所有VC链的指针。

这取决于你试图保存什么样的数据。我会去iOS中的数据存储层次结构。看看NSUserDefaults的会帮助你(其中,从你的问题的性质,我不认为会帮助)。然后尝试SQLite。然后去核心数据。根据数据的性质,也许你也可以尝试将数据存储在文件中。如果你可以在一个单独的类中有静态方法来处理在你浏览关卡时保存所有这些中间数据,那就太棒了。保存最终数据后,删除所有临时存储并完成。

哦,使用这种技术的另一个优点是“从以前停止的地方开始”,以防用户因某种原因决定终止应用程序并重新启动应用程序,或者应用程序意外崩溃。在这种情况下,请检查导航已完成的级别,然后从此处继续。