2011-02-01 139 views
1

我看到一些意外的行为,当我触发模拟内存警告,我希望有人能解释。iOS模拟内存警告问题

我的应用程序包含一个UITabBarController和一个UINavigationController。我的所有UI都是以编程方式创建的,没有任何内容从NIB加载。在我的委托函数applicationDidFinishLaunching中,我创建了选项卡控制器,导航控制器和五个视图控制器。当我触发内存警告时,主视图变为完全白色,导航栏位于顶部,标签位于底部。当我更改选项卡时,新选项卡正确调用loadView时正确地重新加载它的数据,但导航控制器消失。

这使我困惑的原因有两个。 1)为什么主视图被卸载?我不认为viewDidUnload会在主动视图控制器上被调用。 2)为什么我的导航控制器消失了,但只有在更改标签后。这真是一个谜。

谢谢。

回答

1

问题归结到我是如何使用UIViewControllers,UIViews和UINavigationController的我5个视图控制器,每个视图之间动态交换〜3个视图,这有点奇怪,它是我的第一个iOS项目,并不理解“Apple Way”的产品。一个来自我的应用程序的UINavigationController,并写了我自己的。我不使用从一个视图到下一个视图的动画,所以这是非常简单和容易做到的。

经验教训。

1

这听起来像是一个记忆问题。您可能需要retain您为UITabBarController和UINavigationController创建的对象。 在卸载方法中,您需要释放这些内容。

有苹果解释Objective C中的内存管理的优秀手册:。"Memory Management Programming Guide”很清楚,乐于助人

+1

如果您发布了一些代码,它可能会有所帮助。你如何创建你的控制器,如何声明属性? – Axel 2011-02-01 09:41:13