Monotouch内存视图控制器问题

时间:2012-04-20 21:47:17

标签: ios uiviewcontroller uinavigationcontroller xamarin.ios instruments

我的应用程序的内存消耗有问题我希望你可以帮我这个,我有一个导航控制器,可能有10个控制器向前或向后导航,我正在使用Instruments来检查内存分配(也使用了mtouch探测器),当我向前导航(第一次)时,应用程序消耗的内存明显增加..但是当我点击导航控制器的标准后退按钮时,内存仍然是相同的数量,最糟糕的是如果我继续前进,内存增加更多(即:homeVC 10mb,VC1 = 10.5mb,返回homeVC = 10.5 mb,转发到VC1 = 11mb),是的,当我仍在导航VC时,内存正在增加。在这种情况下,我有以下问题:

  • 应用程序在导航控制器的标准后退按钮上的行为是什么(它执行PopViewControllerAnimated?)。
  • PopViewControllerAnimated和navController的其他Pop方法应该释放消失的VC消耗的内存吗?
  • 如果导航控制器的Pop方法没有释放应用程序的内存,那么我应该丢弃消失的VC以避免消耗这么多内存? (我想知道在单声道触摸应用程序中管理内存的最佳工作,也许使用DidReceiveMemoryWarning方法?或者当我可以管理应用程序内存的释放时还有其他地方。)

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

这听起来与这个错误相似:https://bugzilla.xamarin.com/show_bug.cgi?id=1889

您可以通过偶尔获取导航控制器的ViewControllers属性来解决此问题。

答案 1 :(得分:0)

您可以发布分配和推送VC时使用的代码吗?

我猜测正在发生的事情是你在分配之后没有发布它,所以当按下后退按钮时NavigationController释放它时,保留计数仍为+1。