手工内存管理规则的总结

1.如果需要保持一个对象不被销毁,可以使用retain.在使用完对象后,需要使用release销毁

2.给对象发送release消息并不会销毁对象,只有当这个对象的引用计数减为0时,对象才会被销毁.然后系统会发送dealloc消息给这个对象用于释放它的内存.

对使用了retain或者copy,mutableCopy,alloc或者new方法的任何对象,以及具有retain和copy特性的属性进行释放需要覆盖dealloc方法,使得对象在释放的时候能够释放这些实例变量.

3.在自动释放池被清空时也会自动释放的对象做些事情.系统每次都会在自动释放池被销毁的时候发送release消息给池中的每个对象.如果池中的对象引用计数减为0, 系统会发送dealloc消息销毁这个对象.

4.如果在方法中不再需要这个对象但需要将其返回,可以给这个对象发送autorelease消息用以标记这个对象延迟释放.autorelease消息并不会影响到这个对象的应引用计数.

5.当应用终止时,内存中的对象都会被释放, 不论他们是否都在自动释放池中.

当开发Cocoa或者iOS应用程序时, 随着应用程序的运行自动释放池会被创建和清空(每次的事件都会发生). 在这种情况下如果要使自动释放池被清空后自动释放池的对象还能够存在,对象需要使用retain方法,只要这些对象的引用计数大于发送autorelease消息的数量就能够在池被清理后生存下来.

--摘抄自Objective-C程序设计 第六版

--[美]Stephen G.Kochan著

--林冀 范俊 朱奕欣

时间: 2024-10-10 13:43:38

手工内存管理规则的总结的相关文章

【读书笔记】iOS-Coco内存管理规则-拥有对象

一,事件循环.一个典型的图形应用程序往往花费很多时间等待用户操作.在控制程序运行的人非常缓慢地作出决定(例如单击鼠标或按下某个键)以前,程序将一直处于空闲状态.当发生这样的事件时,程序被唤醒并开始工作,执行某些必要的操作以响应这一事件.在处理完这一事件后,程序返回到休眠状态并等待下一个事件发生.为了降低程序的内存空间占用,Cocoa在程序开始处理事件之前创建一个自动释放池,并在事件处理结束后销毁自动释放池.这样可以使累积的临时对象的数量保持在最低程度. 二,自动释放池被清理的时间是完全确定的:要

Objective-C 内存管理

概述 开发的过程中,很多程序员都不会注意管理对象或者变量的内存,导致系统或者应用运行一段时间,就很慢了,或者崩溃.下面我们一起聊聊编程过程中的内存是如何进行管理的. 内存管理包含那些方面? 有效的内存管理,通常包含两方面内容: 内存分配:当程序创建对象时需要为对象分配内存.采用合理的设计,尽量的减少对象的创建,并减少对创建过程中的内存开销. 内存回收:当程序不再需要对象时,系统必须及时回收这些对象所占用的内存,以便程序可以再次使用这些内存. iOS 5 之前,iOS开发人员,需要话费精力去处理内

oc 内存管理小结(**输出才是最好的学习**)

引言 内存管理:清理(回收)不用的内存,以便内存能够再次利用. 这里就需要关注——怎样确定对象不再需要使用,并且其占用的内存可以被收回. 在Xcode4.2发布之前,oc内存管理全靠程序员自己,即手工管理内存计数. 在Xcode4.2版本之后,支持自动引用计数(Automatic Reference Counting,ARC),即摆脱手工管理,程序员从烦恼的内存管理问题中彻底解脱,oyeah~~ 但是,为了理解过去遗留的代码,还是需要了解手工管理内存的原理.并且,也可以帮助coder们更明智地决

iOS开发ARC内存管理技术要点

本文来源于我个人的ARC学习笔记,旨在通过简明扼要的方式总结出iOS开发中ARC(Automatic Reference Counting,自动引用计数)内存管理技术的要点,所以不会涉及全部细节.这篇文章不是一篇标准的ARC使用教程,并假定读者已经对ARC有了一定了解和使用经验.详细的关于ARC的信息请参见苹果的官方文档与网上的其他教程:) 本文的主要内容: ARC的本质 ARC的开启与关闭 ARC的修饰符 ARC与Block ARC与Toll-Free Bridging 技术交流新QQ群:41

iOS 下ARC的内存管理机制

本文来源于我个人的ARC学习笔记,旨在通过简明扼要的方式总结出iOS开发中ARC(Automatic Reference Counting,自动引用计数)内存管理技术的要点,所以不会涉及全部细节.这篇文章不是一篇标准的ARC使用教程,并假定读者已经对ARC有了一定了解和使用经验.详细的关于ARC的信息请参见苹果的官方文档与网上的其他教程:) 本文的主要内容: ARC的本质 ARC的开启与关闭 ARC的修饰符 ARC与Block ARC与Toll-Free Bridging ARC的本质 ARC是

effective OC2.0 52阅读笔记(五 内存管理)

第五章:内存管理 29 理解引用计数 30 以ARC简化引用计数 总结:ARC通过命名约定将内存管理规则标准化.其他编程语言很少像OC这样强调命名.ARC通过设置全局数据结构(此数据结构的具体内容因处理器而异)中的一个标志位,来代替直接调用autorelease和retain.这是ARC所带来的好处.待编译器与运行期组件日臻成熟,还会出现其他的优化技术.CoreFoundation对象不归ARC管理,开发者必须适时调用CFRetain/CFRelease. 31 在dealloc方法中只释放引用

iOS开发ARC内存管理

本文的主要内容: ARC的本质 ARC的开启与关闭 ARC的修饰符 ARC与Block ARC与Toll-Free Bridging ARC的本质 ARC是编译器(时)特性,而不是运行时特性,更不是垃圾回收器(GC). Automatic Reference Counting (ARC) is a compiler-level feature that simplifies the process of managing object lifetimes (memory management)

iOS开发中的ARC内存管理de技术要点

本文旨在通过简明扼要的方式总结出iOS开发中ARC(Automatic Reference Counting,自动引用计数)内存管理技术的要点,所以不会涉及全部细节.这篇文章不是一篇标准的ARC使用教程,并假定读者已经对ARC有了一定了解和使用经验.详细的关于ARC的信息请参见苹果的官方文档与网上的其他教程:) 本文的主要内容: ARC的本质 ARC的开启与关闭 ARC的修饰符 ARC与Block ARC与Toll-Free Bridging ARC的本质 ARC是编译器(时)特性,而不是运行时

linux内存管理内幕

原文地址:http://blog.csdn.net/wangyuling1234567890/article/details/39609863 忽然想起前几天在公司看到一篇关于内存管理的文章,但当时由于别的事情给打断了.今天想起来,就又在网上找了一下,与大家分享一下. 虽然自己现在从事内核模块开发,对内存池和引用计数也有所了解,但由于理解深度及文笔,不能自己娓娓道来,所以就和大家一起来瞻仰一下大师给我们的讲解. 以下内容来自于http://www.ibm.com/developerworks/c