当前位置:  开发笔记 > 编程语言 > 正文

iPhone开发 - 内存管理的经验教训

如何解决《iPhone开发-内存管理的经验教训》经验,为你挑选了1个好方法。

我需要内存管理课程.我有一个使用多个视图(大约10个)的应用程序,其中一些附加到选项卡控制器.问题是我正在使用图像(我从Web服务加载的许多图像).我面临以下问题.

    当我在表格视图中滚动时,内存不断增加(为什么?) - 我从Apple的站点检查了CustomTableViewCell应用程序,当我使用Instruments运行它时,它显示相同的符号.

    我正在使用带有许多对象的自动释放,但我发现这些对象实际上并没有被释放并且内存已经连线.我怎样摆脱这些物体?

    如何告诉NSAutoreleasePool定期释放未使用的对象?我认为这可以帮助我摆脱有线内存.但我能这样做吗?

有没有Apple或其他人(书籍或在线文章)解释如何使用仪器的例子(稍微详细的例子?)并微调应用程序的内存和性能?

谢谢.



1> Tom Harringt..:

既然我们已经对自动释放的"只说拒绝"答案,我想我会在如何更有效地使用自动释放方面添加一个提示.无论好坏,不是每个人都会完全避免自动释放 - 如果没有其他原因,因为Apple提供了许多方便的方法来交给你自动释放的对象.

您不能只告诉自动释放池释放您未使用的任何对象.没有垃圾收集,它怎么会知道?

你可以做的是创建一个本地自动释放池,然后当你不再需要本地自动释放的对象时释放它.如果你有一个你正在创建自动释放对象的块,你将确保通过在块的开头创建一个本地自动释放池来释放它们(只需分配/初始化它,不需要魔法),然后释放池.块结束.瞧,池中的物品也被释放了.

自动释放池嵌套,因此如果您这样做,请记住这一点.如果您释放自动释放池,请确保它是最近分配的池而不是其他池.

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有