第8章内存管理_第1页
第8章内存管理_第2页
第8章内存管理_第3页
第8章内存管理_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第第页第8章内存管理第8章内存管理

吕恩乐

内容进度内存管理的概念引用计数野指针与僵尸对象对象全部权自动释放池

内存管理的概念iOS开发中可用的内存回收机制有如下2种:手动引用技术和自动释放池自动引用计数(AutomaticReferenceCounting,ARC)

*code4.2之前,OC的内存回收需要程序员花费大量的时间与精力去管理对象的引用技术(release、retain、autorelease),这样才能让程序正常回收内存,稍有不慎,程序就可能会造成内存泄漏,或者可能让对象过早的释放,从而引起程序崩溃。在*code4.2之后,引入了一个重要的特性:自动引用计数(AutomaticReferenceCounting,ARC)。从今之后,程序员不再需要重点关注内存回收相关内容。它大大提高了ios程序的开发效率。

内存管理的概念内存管理是关于如何管理对象生命周期的编程原那么(软件运行时对内存资源的安排和使用的技术。最主要的目的是如何高效、快速的安排内存,并且在适当的时候释放和回收内存资源)。OC中的内存管理只针对OC中的对象,全部的对象都是继承自NSObject,基本数据类型不需要管理内存。

内存管理的概念有效的内存管理,通常包括两方面内容:内存安排:当程序创建对象时需要为对象安排内存。采用合理的设计,尽量减削对象的创建,并减削创建过程中的内存开销。内存回收:当程序不再需要对象时,系统需要实时回收这些对象所占用的内存,以便程序可以再次使用这些内存。

引用计数全部OC中的对象都有一个计数器,这个计数器我们称为引用计数引用计数表示当前有几个“人”在使用当前对象。OC中的引用计数器变为0的时候,系统就会把对象所占的内存回收。每一个对象都有一个retainCount引用计数,表示当前对象被引用的数量。那么怎么使引用计数加减呢?

引用计数alloc用来安排内存,安排内存完成后,引用计数为1,只调用一次。retain使引用计数+1(retain方法返回对象本身),可以调用多次。release使引用计数-1,可以调用多次。当引用计数为0时,对象会被系统从内存中销毁,销毁之前,系统会自动调用该对象的dealloc方法。dealloc方法是NSObject的方法,所以一般自定义的类需要重写dealloc方法来判断该对象是否被回收。7

alloc、retain、release例如

野指针野指针:指向了一块已经被

销毁的内存的指针,也叫指向了僵尸对象的指针僵尸对象:所占用的内存已经被销毁的对象留意!!不能让僵尸对象起死回生[对象名retain]

野指针错误

避开野指针错误由于OC中不存在空指针错误,给空指针发送消息也不会报错。所以我们在把对象的引用计数减为0的时候,习惯性将该对象设置为nil,这样可以有效避开野指针错误

开启僵尸对象检测

对象全部权当一个全部者(owner,其本身可以是任何一个OC对象)做了以下某个动作时,它就拥有了对一个对象的全部权。–假如创建或者复制某个对象时,那么拥有了该对象的全部权–alloc、new、copy、mutableCopy–假如没有创建对象,而是将对象保留使用,同样拥有该对象的全部权–retain

使用如下方法释放对象全部权–release、autorelease

对象全部权例如

对象全部权例如

对象全部权例如

对象全部权例如

set方法内存规范之前的set方法不够严谨,还是有问题。之前是多个人拥有一条狗,假如改成一个人拥有多条狗呢?

之前的set方法会导致只释放最末一条狗,之前的狗没法得到释放

set方法内存规范假如改成一个人拥有多条狗呢,之前的set方法就会有问题

应当如何处理呢?

@property改进之前咱们学过@property是简化了se

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论