【问题标题】:iPhone - Handling Memory with Multiple ViewsiPhone - 使用多个视图处理内存
【发布时间】:2011-01-19 21:27:54
【问题描述】:

这是来自探索 iPhone SDK 书籍的一段代码。它使用 2 个视图的示例。它会检查正在使用的视图并释放另一个视图。

- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning]; // Releases the view if it
    // doesn't have a superview

    // Release anything that's not essential, such as cached data
    if (self.blueViewController.view.superview == nil)
        self.blueViewController = nil;
    else
       self.yellowViewController = nil;
}

我的问题是:如果我的应用有很多视图,例如 15 个,我是否需要像上面一样检查每个视图并释放未使用的视图?还是在这种情况下使用了不同的技术?`

【问题讨论】:

    标签: iphone memory-management uiview uiviewcontroller


    【解决方案1】:

    概念是书中更重要的内容(在内存不足警告的情况下释放任何不必要的内容)而不是示例的细节(清除您不使用的视图)。

    如果您的应用程序使用了许多视图,我的第一个问题是视图的切换频率是多少?如果用户在一个或另一个视图上停留一段时间,最好在将其他视图从屏幕上转换时释放它们,以便抢先为您的应用程序提供尽可能多的可用内存。在这种情况下,本书的示例真的不适用,因为您已经清除了所有“缓存”视图。如果他们在视图之间快速切换,那么离屏视图最好保留(设置新视图有点昂贵。)在这种情况下,您需要在内存不足的事件中遵循本书的示例。

    【讨论】:

    • 非常感谢,你帮我清理了这么多。因此,如果我知道一旦该视图加载,用户将在一个视图上停留一段时间,我应该从内存中释放前一个视图吗?
    • 这就是我要走的路。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-22
    • 2012-06-13
    • 1970-01-01
    相关资源
    最近更新 更多