| 技巧 | 采取的措施 |
| 消除内存泄露 | 由于内存是iPhone OS的关键资源,所以您的应用程序不应该有任何的内存泄露。存在内存泄露意味着应用程序在之后可能没有足够的内存。您可以用Instruments程序来跟踪代码中的泄露,该程序既可以用于仿真器,也可以用于实际的设备。 |
| 使资源文件尽可能小 | 文件驻留在磁盘中,但在使用时需要载入内存。属性列表文件和图像文件是通过简单的处理就可以节省空间的两种资源类型。您可以通过 |
| 使用Core Data 或SQLite来处理大的数据集合 | 如果您的应用程序需要操作大量的结构化数据,请将它存储在Core Data的持久存储或SQLite数据库,而不是使用扁平文件。Core Data和SQLite都提供了管理大量数据的有效方法,不需要将整个数据一次性地载入内存。 Core Data的支持是在iPhone OS 3.0系统上引入的。 |
| 延缓装载资源 | 在真正需要资源文件之前,永远不应该进行装载。预先载入资源文件表面看好象可以节省时间,但实际上会使应用程序很快变慢。此外,如果您最终没有用到那些资源,预先载入将只是浪费内存。 |
| 将程序连编为Thumb格式 | 加入 |
| 减少自动释放对象的使用 | 通过autorelease方法释放的对象会留在内存中,直到显式清理自动释放池或者程序再次回到事件循环。在任何可能的时候,请避免使用autorelease方法,而是通过release方法立即收回对象占用的空间。如果您必须创建一定数量的自动释放对象,则请创建局部的自动释放池,以便在返回事件循环之前定期对其进行清理,回收那些对象的内存。 |
| 为资源设置尺寸限制 | 避免装载大的资源文件,如果有更小的文件可用的话。请用适合于iPhone OS设备的恰当尺寸图像来代替高清晰度的图像。如果您必须使用大的资源文件,需要考虑仅装载当前需要的部分。举例来说,您可以通过mmap和munmap函数来将文件的一部分载入内存或从内存卸载,而不是操作整个文件。 |
| 避免无边界的问题集 | 无边界的问题集可能需要计算任意大量的数据。如果该集合需要的内存比当前系统能提供的还要多,则您的应用程序可能无法进行计算。您的应用程序应该尽可能避免处理这样的集合,而将它们转化为内存使用极限已知的问题。 |
ios内存优化
最新推荐文章于 2025-01-19 21:39:52 发布
本文提供了一系列关于如何优化iPhone应用程序内存使用的建议,包括消除内存泄露、压缩资源文件、使用CoreData或SQLite处理大数据集合等。文章还介绍了延缓装载资源、减少自动释放对象的使用等方法。
711

被折叠的 条评论
为什么被折叠?



