【问题标题】:problem with memory space in objective c目标c中的内存空间问题
【发布时间】:2011-04-23 17:00:52
【问题描述】:

在我的应用程序中,我有一个带有 2 个导航控制器的标签栏,每个导航控制器都有一个按钮,可以通过推送打开另一个视图。

我执行此操作以自动释放新视图。

看到Instruments,我注意到当我点击一个按钮进入下一个视图时,内存增加,但回来仍然相似,这是否正常?

视图只包含标签和1张背景图片,全部由IBoutlet连接,全部在dealloc中释放。

例如,按下第一个按钮并打开第一个视图内存 1.05 MB -> 1.78 MB,返回 1.78 -> 1.65,然后再次按下它将保持不变。

想法?

【问题讨论】:

    标签: objective-c memory


    【解决方案1】:

    您应该实现 viewDidUnload 和 nil IBOutlet 属性。请参阅 UIViewController 文档。

    背景图片有可能被缓存了,因此内存增加了一次。

    【讨论】:

      【解决方案2】:

      您是否正在使用 [UIImage imageNamed:@"image_file_name.jpg"] 加载图像?如果是这样,则该图像将缓存在内存中,因此如果您一次又一次地加载图像,则不必从磁盘读回它并重新创建底层 NSData 对象。

      尝试使用[UIImage imageWithContentsOfFile:@"image_file_name.jpg"] 加载图像。该方法不会将图像缓存在内存中,因此当您在 viewDidUnload 方法中将图像设为 nil 时,所有内存将很快恢复。

      【讨论】:

        猜你喜欢
        • 2012-07-08
        • 2011-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多