当应用程序接收到内存不足的警告消息,3种情况可能发生:iPhone - 如何处理内存不足的情况
- 您的应用程序刚刚启动,用户没有做什么特别的东西
- 应用程序正在运行,并且有一个当前上下文
- 应用程序是在一些运行的前后
所以,当你收到此消息,您应该以释放内存......但是,在后台?如何 ?
我的理解是:
initWith
.....必须设置默认的静态值。viewDidLoad
必须加载任何非静态对象didReceiveMemoryWarning
必须释放那些非静态对象- 我看不出有什么可以/必须
viewDidUnload
做...
我猜有些保留值必须设置为零...在didReceiveMemoryWarning中?
对于活动的上下文(屏幕的东西,显示的文本,......的位置)必须做什么,所以当再次调用viewDidLoad时,那些东西再次出现,因为他们在memoryWarning调用之前?
我的意思是,想象情景2:
方案1
- 您正在使用的东西......你在现场写了一些文字,没救了它,开了另一种观点,在屏幕上移动了一个视图。
- 您在后台发送应用程序。
- 然后memoryWarning发送到应用程序。
- 之后,用户将应用程序发送到前台:它应该显示像退出时一样,在当前视图上显示与之前视图相似的内容,但是如果所有内容都已发布,您将如何执行此操作?
方案2
- 您正在使用的东西......你在现场写了一些文字,没救了它,开了另一种观点认为,移动屏幕上的视图。
- 然后memoryWarning发送到应用程序。
- 您不想松开视图中的内容,也不想放松前一视图中的内容。由于发布/重新加载功能,您不希望屏幕闪烁。你如何处理这个问题?
因此,当这些内存警告发生时,除了将事情写入磁盘以稍后显示它们之外,还有其他选择吗?
你什么时候再加载它们?我有一个viewController加载(viewDidLoad),接收memoryWarning,unloads(viewDidUnload),但回到它时,viewDidLoad不会再被调用?这是否必须在viewWillAppear中完成?我是否必须认为,随时viewWillAppear触发,我可以假设应该显示在它上的东西被加载?
任何帮助,即使有价值的链接,都会很棒!
谢谢你的帮助。
在我的情况下,最好让应用程序在闪烁时被杀死。我没有用户数据,但ap生成的内容。这些内容丢失会更好,而不是以不平滑的方式生成。 – Oliver