iOS开发--内存管理

内存管理分两种模式

  • 首先我们知道每一个oc对象都有一个内部的引用计数器(引用计数器的值是NSINteger类型),当有一个新的指针只想这个对象时,我们将引用计数加1 ,当某个指针不再指向该对象时,我们将其引用计数减1,当引用计数为0时,说明这个对象不再被任何指针指向了,这个时候我们就可以将对象销毁,回收内存。
  1. MRC模式
    先说MRC(手动内存管理),当使用alloc,new,或者copy创建一个新对象时,新对象的引用计数默认就是1,当一个对象引用计数器值为0时,他将被销毁,其占用的内存会被系统回收,当一个对象被销毁时系统会自动向对象发送一条dealloc消息,一般会重写dealloc方法在这里释放相关资源,当对象被释放掉后,不可以重复释放,会出错,当引用计数器值为零时,那块储存空间就不可用了,是僵尸对象,如果再去进行释放,会出现野指针错误(只想了僵尸对象)(报错:EXC-BAD-ACCESS)。所以引用计数器值为0后要将指针清空防止出现野指针错误。
  2. ARC模式
    ARC(注意ARC不是垃圾回收机制,是编译器特性,编译器会自动帮我们插入内存管理代码),ARC对象释放与否的判断标准:只要没有强指针指向对象,对象就会被释放,默认情况下所有指针都是强指针,ARC下对象被释放后会自动清空指针,不会出现野指针错误。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、为什么要学习内存管理 内存对于任何硬件及软件的重要性不言而喻,而作为硬件与用户交流的中间体软件,对于内存的要求...
    极客James阅读 4,302评论 7 34
  • 内存管理 简述OC中内存管理机制。与retain配对使用的方法是dealloc还是release,为什么?需要与a...
    丶逐渐阅读 1,989评论 1 16
  • Objective-C 的内存管理方法,分为3种 MRC(Manual Reference Counting, 手...
    PipeYL阅读 646评论 2 2
  • 29.理解引用计数 Objective-C语言使用引用计数来管理内存,也就是说,每个对象都有个可以递增或递减的计数...
    Code_Ninja阅读 1,522评论 1 3
  • 小色稿是对第一阶段的一个总结和测试,当场完成,很是忙乱,只够及格。 冬景的描绘掌握得不是很好,尤其是一些诸如枯笔、...
    千誉嘉言阅读 342评论 15 18