iPhone开发秘籍 (第2版)2.6 内存管理_iPhone开发秘籍 (第2版)2.6 内存管理试读-查字典图书网
查字典图书网
当前位置: 查字典 > 图书网 > 编程 > iPhone开发秘籍 (第2版) > 2.6 内存管理

iPhone开发秘籍 (第2版)——2.6 内存管理

iPhone没有提供垃圾收集机制。它依赖于一个引用计数的内存管理系统。这意味着开发人员必须控制何时创建对象、保留对象和从内存中释放对象。如果使用太多的内存,iPhone会警告应用程序委托和UIViewController。委托收到applicationDidReceiveMemoryWarning:回调,视图控制器收到didReceiveMemoryWarning。如果继续使用太多内存,iPhone将终止你的应用程序,使你的用户回到SpringBoard。正如苹果公司反复指出的那样,这也许不是你希望用户得到的用户体验,所以苹果公司拒绝接受你的应用程序进入App Store。 你必须在程序中小心地管理内存,在低内存的情况下释放内存。导致低内存的原因通常有两个:一是内存泄漏,即分配了不能被访问或重用的内存块;二是一次存储了太多的数据。 说明 除了保留和释放外,Objective-C还提供自动释放内存管理。将自动释放发送到一个对象(通常在该对象创建时),意味着希望它在将来某个时候自动被处理。请求对象的方法可以马上使用自动释放的对象,在当前运行的循环结束时处理对象,或者保留该对象,供将来使用。第3章将更详细地讨论内存管理。 2.6.1 泄漏 在Objective-C中,每个对象在创建时都带有一个基于整数的保留计数。只要那个保留计数大于或等于1,对象就不会被释放。开发人员需要实现一定的策略,确保在不再使用对象时将其释放。 使用alloc、new或copy创建的每个对象一开始的保留值都为1。如果发送一条retain消息到对象,则对象的保留计数加1。如果向对象发送release消息,则保留计数减1。(将对象赋给一个已保留属性也会使保留计数增加。)如果失去了对一个对象的访问权限,而又没有将保留计数减至0,那么就造成了泄漏,也就是说,分配出去的内存无法收回。下面的代码导致一个数组的内存被泄漏: 2.6 内存管理1

展开全文

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

《iPhone开发秘籍 (第2版)》其他试读目录

• 本章介绍
• 1.1 iPhone开发人员计划
• 1.2 开始
• 1.3 理解型号差异
• 1.4 平台限制
• 1.5 SDK限制
• 1.6 使用开发人员门户
• 1.7 组建iPhone项目
• 1.8 iPhone应用程序组件
• 1.9 编程范例
• 1.10 小结
• 本章介绍
• 2.1 创建新项目
• 2.2 用模板构建Hello World应用程序
• 2.3 使用模拟器
• 2.4 极简单的Hello World
• 2.5 使用调试器
• 2.6 内存管理 [当前]
• 2.7 秘诀:使用Instruments检测内存泄漏
• 2.8 秘诀:使用Instruments监视缓存对象的内存分配
• 2.9 使用Clang静态分析器
• 2.10 针对iPhone进行构建
• 2.11 从Xcode到iPhone:Organizer Interface
• 2.12 使用编译器指令
• 2.13 针对发布进行构建
• 2.14 清除构建
• 2.15 针对临时发布进行构建
• 2.16 定制Xcode标识
• 2.17 创建自定义Xcode模板
• 2.18 并排查看代码
• 2.19 小结