【问题标题】:iPad View Controller Memory ManagementiPad View Controller 内存管理
【发布时间】:2010-12-19 13:26:36
【问题描述】:

我的 iPad 应用中有 3 个视图控制器。当第一个出现时,Instruments 中的活动监视器告诉我应用程序的内存为 25MB。在 [self presentModalViewController] 调用之后,弹出了一个新的视图控制器,内存增加到 50MB,然后是第三个,70-75MB。

iPad 开发的最佳视图控制器内存管理是什么?现在,当我使用真正的 iPad 时,我总是会收到内存警告。

提前致谢。我为我的英语感到抱歉,因为它不是我的母语。 :)

【问题讨论】:

    标签: objective-c ipad viewcontroller


    【解决方案1】:

    iPad 只有 256 MB 的 RAM,是 iPhone 4 的一半。

    您的视图控制器似乎正在加载大量资源或在其他地方分配大量内存。您应该能够使用 Instruments 工具找出内存的确切分配位置。

    【讨论】:

      【解决方案2】:

      您检查过内存泄漏吗?
      仪器 -> 泄漏。

      http://developer.apple.com/library/ios/#documentation/Performance/Conceptual/ManagingMemory/Articles/FindingLeaks.html

      另一个考虑是正确分配和释放所有对象,这并不容易,但很有必要。

      您可以从构建选项启用另一个控件:RUN_CLANG_STATIC_ANALYZER 以在编译时显示所有错误版本。

      阿尔贝托,

      【讨论】:

        【解决方案3】:

        我的建议是查看每个视图控制器的 viewDidUnload 方法。从 iOS 3.0 开始,当您的应用收到内存警告时,iOS 将尝试在此处取回一些内存。

        为了更清楚,您应该尝试在此方法中将所有 IBOutlets 设置为 nil,以便在调用时,您不必要的 UI 内容(不必要,因为当时那些 nib 文件未显示给用户)将被清除并将其分配的内存返回给操作系统。当它们再次出现时,它们将被 viewDidLoad 方法重新创建。

        示例代码:

        - (void)viewDidUnload {
            [super viewDidUnload];
            // Release any retained subviews of the main view.
            // e.g. self.myOutlet = nil;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-06-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-02-07
          相关资源
          最近更新 更多