从内存中卸载XIB

时间:2009-05-17 01:35:27

标签: iphone

所以这是我的设置:

  • 用户旋转PickerWheel,选择导航到应用的哪个部分。
  • 该应用程序从XIB文件加载UIViewController并将其推送到navigationController堆栈
  • 用户可以随时弹出并选择另一个部分导航到 - viewController(应该是)完全销毁并重新分配给新的XIB文件

看起来很简单,但这些部分都非常耗费资源。当他们弹回时我找不到一个好的方法来彻底清除XIB的内存 - 我只是调用[viewController release],虽然它工作并最终调用UIViewController子类的 - (void)dealloc方法, XIB文件中的一些内容仍保留在内存中(我可以在ObjectAllocations中看到它们,我可以在ActivityMonitor中看到大量内存)。

基本上我要问的是从内存中完全删除动态加载的XIB的最佳方法是什么?

1 个答案:

答案 0 :(得分:6)

viewController.view = nil;

如果NIB控制的UIViewController上的view为nil,那么它将在下次请求时自动重新加载NIB。这正是-didReceiveMemoryWarning的工作原理。

正如我对此的考虑更多,这不会立即丢弃您的IBOutlets,在您的情况下可能很重要。因此,您还需要为Memory Management of Nib Objects中描述的IBOutlet实现特殊的内存管理。

您需要按照描述实施-setView:。仔细阅读整篇文档。我已经在Memory Managing IBOutlets中写了一个关键点的快速摘要。