应用程序有 4 个 View Controller ;菜单、A、B 和 C,以及一个单例类,用于将数据保存在 4 个数组中,这些数据在应用程序终止时写入磁盘。从菜单中进行选择会创建 A 的实例“a”;从“a”中进行选择会创建 B、“b”的实例,并且从“b”中进行选择会调出模态数据输入 View “c”。
我模拟来自“b”的内存警告,并且4个数组的内容(在“c”中输入)消失,但不是立即消失,只有在返回“b”(仍然存在于“b”中)然后返回之后到“a” - 在 viewDiDAppear(数据完美显示)和 viewWillDisappear(数据消失)之间的“a”中的某处,即使我唯一做的就是点击后退按钮。
根据我的经验,内存警告释放 View ,但我很困惑为什么数组似乎被释放。我在创建后尝试“保留”,但内容仍然消失。
任何关于可能发生的事情的想法都值得赞赏。
谢谢。
最佳答案
对我来说并不完全明显(尽管应该是),当 View 被释放时,下次调用该 View 时,将再次调用 viewDidLoad 方法;由于我在 viewDidLoad 方法中初始化了数组,因此它们被清除了。
希望将来有一天,这篇文章可以为某人节省我在这方面浪费的时间(至少那时我不会因为“呃, View 消失了,必须调用 viewDidLoad”而感到那么难过)
关于iphone - 内存问题: simulated memory warning/didReceiveMemoryWarning,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3504812/