我的应用程序是一个UITabbar应用程序有八个选项卡。一个用于播放音频的选项卡,一个用于播放视频,一个用于书籍(Leavesview用于打开jpg图像页面),一个用于Gallery .....等等。
所以,一旦我打开所有标签,应用程序就会抛出内存警告和崩溃。 然后我做了这个:在每个标签viewController中,我已经在ViewDidAppear方法中分配了所有内容(views,imageViews .....),然后我在ViewDidDisappear方法中删除了.FromSuperView并释放。即使问题仍然存在。
使用活动监视器我观察到应用程序在超过128 MB内存时崩溃。 每个标签的ViewController占用大约40MB内存。即使我在选项卡的ViewDidDisapper中释放所有内容,内存也不会被释放,但会继续增加。
有什么关于我错过的记忆吗?请帮我解决这个问题,谢谢。
答案 0 :(得分:1)
我注意到在实例化UITabBarController时,它会加载它的所有依赖项,并且在尝试释放整个UIViewController时非常顽固。当我有一个连接到UITabBarController的高内存UIViewControllers时,我已经做了一些事情来解决这个问题。我建议只发布与ViewWillDisappear上的每个UIViewController关联的内存占用控件,并在ViewWillAppear上重新实例化它们,而不是尝试释放整个UIViewController。通常这是不好的做法,因为你想尽可能多地回收控件,但如果你必须坚持使用UITabBarController,这是我成功的唯一方法。
如果我误读了你的帖子并且你没有尝试释放UIViewController,我需要看一些代码来弄清楚为什么东西没有在ViewWillDisappear上发布。