From: http://ihuby.info/2011/07/18/ios%E5%BC%80%E5%8F%91%E7%BB%8F%E9%AA%8C%E6%80%BB%E7%BB%93-%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86/
iOS 开发中的一个重要部分就是关于内存的使用管理,用的不好就容易就产生内存泄露或内存错误访问,造成软件的崩溃,影响产品的使用和用户体验。在团队协调开发中也整理过了一些开发规范,正好看到国外的一篇开发博客文章“10-iphone-memory-management-tips”,其重要列表部分我翻译并整理一下。
一些重要的背景知识点:
- iPhone3G只有128M RAM内存,至少有一半是要留给操作系统;也即大概只有很小的40M内存左右留给了应用程序… 另外请记住,即使你开发的应用只使用了3M内存的时候,也有可能收到系统的内存警告通知。(Huby注:3GS内存总大小是256M,应用程序能使用大概不到80M;而iPhone4的内存大小是512M,应用程序能使用大概180M左右。而Apple对一个App设定的限额一般是20M)
- iPhone 不使用垃圾回收机制,即使Objective-C 2.0中有垃圾回收机制可使用(用Objective-C 2.0开发Leopard上的App可使用垃圾回收)。
- 内存管理的基本原则是:任何一处对象只要调用了 [ alloc | retain | copy ]一次,就必须在代码某处有一一对应执行相应的 [release] 方法。
- Objective-C 运行时的对象实例都是在堆(Heap)中,不允许在栈(stack)中创建实例对象;这意味着没有自动化对象,也没有智能指针对象帮你管理内存。
- 对象可以使用 autorelease 方法,但是要当心,这些对象必须等到他们的内存池自动释放的时候才能释放,如果内存池没有释放,其实也就相当于仍然产生了内存泄露。
- iPhone没有内存交换文件(swap file),所以也就没有虚拟内存概念。当系统没有更多内存可用的时候,那么就真的是没有了。
经验总结:
- 要写代码处理iOS系统的内存警告通知。
- 尽量避免使用对象的内存自动释放机制。
- 使用延迟加载创建对象以及内存对象的重用机制。(注: 横向或纵向滚动列表中特别适用)
- 尽量避免使用UIImage的imangeNamed方法。(注:这样就等于使用了系统内存自动释放机制)
- 自绘Table Cell并适当重用。
- 重写属性的Setter方法。
- 小心使用委派(Delegation)机制。
- 使用Instruments工具优化内存使用。
- 使用代码静态分析工具优化代码。
- 启用NSZombieEnabled可发现更多内存问题。
参考资料:
iOS应用开发性能调优(from Apple)
分享到:
相关推荐
ios开发常用到的API,适用于ios开发者,iOS开发经验总结
ios移动开发的内存管理ppt,讲的不错,你值得拥有
ios开发 iOS开发涵盖了许多方面,以下是一些关键的开发技巧和最佳实践: 熟悉Swift或Objective-C:Swift是苹果...内存管理:理解ARC(Automatic Reference Counting)自动引用计数机制,避免内存泄漏和循环引用问题。
ios iphone开发-内存管理 所有权是iPhone内存管理的核心思想,对象的所有者负责在使用完对象后进行释放。一个对象可以有多个所有者,当它没有所有者时将被设置为取消分配(deallocation)
iOS开发学习笔记之内存分配图示.虚拟内存分配图示
IOS 内存管理 详细讲解iOS内存管理,对于深入研究内存管理的同学必须下载啊!
1.ios系统当前内存显示 2.label显示当前内存
一本自己总结的开发资料,很基础,希望给大家带来帮助
第一部分介绍iOS 开发的常用工具,第二部分介绍iOS开发中的一些常见的实践经验,第三部分介绍iOS 开发中涉及的原理。 如果把成为iOS 开发高手的过程比作武侠小说中的修炼过程的话,工具、实践和理论的学习就分别对应...
唐巧的《iOS开发进阶》,希望对一些初级的程序员有用
iOS 开发总结适合 iOS新手及老手参考
资源名称:iOS开发视频教程资源目录:【】iOS开发视频教程-第01讲-iOS历史介绍【】iOS开发视频教程-第02讲-XCode安装【】iOS开发视频教程-第03讲-UIView_PPT【】iOS开发视频教程-第04讲-UILabel【】iOS开发视频教程-...
资源名称:《iOS开发零基础入门教程》(40集)资源目录:【】传智播客《iOS开发零基础入门教程》1.1【】传智播客《iOS开发零基础入门教程》1.2【】传智播客《iOS开发零基础入门教程》1.3【】传智播客《iOS开发零基础...
ios开发流程ios开发流程
从零开始学iOS7开发系列教程-事务管理软件开发实战 包括pdf 和源码 一共9章
总结iOS开发代码实践总结iOS开发技巧共16页.pdf.zip
精通iOS开发源码下载地址,这个本书简直太棒了,是我买过的性价比最高的一本书。
作者唐巧,本书定位于帮助那些iOS开发人员提高自己的开发水平
总结最近ios开发心得,挺好,挺完善。。