我想了解Objective-C中的内存管理,我觉得这并不容易,因为我在Objective-C和ARC上相当新,而且我主要用来编写我不需要处理的语言.内存管理很多(或根本没有).
我正在处理的应用程序是在按下按钮后从代码中呈现一个viewController(附带xib文件).在这个视图控制器中,我实例化了几个视图; 我录制了一系列图像(照片来自相机,保存到磁盘),我将其转换为电影,并且我有一个gps跟踪器(mapKit),它在屏幕上显示一个小地图.完成所有操作后,我可以按下一个"完成"按钮[self dismissViewControllerAnimated:YES completion:nil];
viewController动画回到我的rootViewController,因为我在viewController中NSLog的dealloc方法中放了一条消息,我正在被解除,我可以确认这个viewController正在被释放.
问题是我看到使用应用程序后的内存上升(使用情况包括在MapKit地图上拍摄和录制gps位置以及生成电影文件)到大约80 MB,当我按下时这会下降到大约70 MB 'done'所以viewController解散,app返回我的rootViewController.我可以再次呈现相同的viewController,使用它并解除它,应用程序仍将占用大约70MB的内存,不会掉线.这对我来说看起来并不像是一个内存泄漏,因为在这种情况下,我希望每次实例化和解除viewController都能稳定上升内存.即使我在rootViewController中有不同的按钮,它们都实例化了我的viewController类的一个新的独特实例,但情况并非如此.
我想知道:我应该寻找什么或这是预期的行为?也许该应用程序是缓存类以供将来使用?在内存管理正确的情况下,我应该期待一个应用程序在解除所呈现的唯一viewController后恢复到"处女"内存状态(在这种情况下,这将是大约4 MB)?
memory-management objective-c uiviewcontroller ios automatic-ref-counting
一个基于标签栏的应用程序,带有5个标签切换选项...我怎么想有效地管理内存?
选项卡之间的切换非常频繁我是如何管理这种情况的?
要么
无论如何,所有标签都会保持活动状态?但这是一个糟糕的选择......
请详细说明标签栏内存管理