美文网首页
iOS开发 - 对MRC和ARC的理解

iOS开发 - 对MRC和ARC的理解

作者: 快乐灬玩耍 | 来源:发表于2021-02-21 17:27 被阅读0次

内存管理基本概念

在OC的内存管理,其实就是引用计数的管理。内存管理就是在程序需要时程序员分配一段内存空间,而当使用完后将它释放。如果对内存资源使用不当,不存会造成内存资源的浪费,甚至会导致程序crash等。

引用计数

当对象被创建,即通过alloc/new/copy等方法时,其引用计数器的初始值为1
当给对象发送retain消息时,其引用计数器加1。
当给对象发送release消息时,其引用计数器减1。
最后当对象的引用计数器为0时,Objc会给对象发送dealloc消息来销毁对象。
一句话谁创建、谁释放、谁引用、谁管理的原则。

空指针

没有存储任何内存地址的地址就称为空指针(NULL指针)

野指针

引用计数器为0了,还进行操作,导致程序crash

自动释放池

当我们不再使用一个对象的时候,应该将其释放。但我们很难理清一个对象什么时候不再使用,也就不知何时释放,为了解决这个问题,Objc提供了autorelease方法来解决这个问题

ARC自动内存管理

只要还有一个强指针变量指向对象,对象就会保持在内存中。

强指针和弱指针

  • 默认所有实例变量和局部变量都是强指针。

  • 弱指针指向的对象被回收后,弱指针会自动变为nil指针,不会引发野指针错误。

  • 不允许调用release、retain、autorelease、retainCount方法

  • 重写父类的dealloc方法时,不能再调用[super dealloc];

  • 两个类相互引用时,其中一个类使用strong,另一个类使用weak

ARC下使用MRC

在项目的Build Phases的Compile Sources中选择需要使用MRC方式的.m文件,然后双击该文件,在弹出的对话框中输入-fno-objc-arc即可

相关文章

  • iOS内存管理相关知识点

    iOS 开发:彻底理解 iOS 内存管理(MRC、ARC)[https://www.jianshu.com/p/4...

  • ARC和MRC

    笔者开始自学iOS的时候是MRC的,不久便接触了ARC。 下面介绍一下我所理解的MRC和ARC: ARC和MRC的...

  • iOS开发 - 对MRC和ARC的理解

    内存管理基本概念 在OC的内存管理,其实就是引用计数的管理。内存管理就是在程序需要时程序员分配一段内存空间,而当使...

  • iOS 面试注意事项

    对mrc和arc的理解:OC知识--彻底理解内存管理(MRC、ARC) - 简书 谈谈对自动释放池的理解:关于自动...

  • 内存管理

    OC知识--彻底理解内存管理(MRC、ARC) IOS工程中混合使用ARC与MRC iOS 简单而粗暴的说一说内存...

  • iOS 开发:iOS内存管理分析

    前言 本篇博客手动 copy 自 iOS 开发:彻底理解 iOS 内存管理(MRC、ARC)。谢谢原作者的详细分析...

  • OC 知识:彻底理解 iOS 内存管理(MRC、ARC)

    OC 知识:彻底理解 iOS 内存管理(MRC、ARC) - 简书

  • Interview

    Tencent 先简单自我介绍一下自己 对mrc和arc的理解 谈谈对自动释放池的理解 自动释放池在mrc和arc...

  • iOS 底层 day25 内存管理 MRC copy

    一、MRC 1. MRC基本介绍 现在我们 iOS 开发都在使用 ARC,基本上不会使用 MRC,那为什么我们还要...

  • iOS ARC全解?

    问题简单介绍 ARC 以及 ARC 实现的原理。考查点 我记得在刚接触iOS的时候对这个ARC和MRC就讨论颇深,...

网友评论

      本文标题:iOS开发 - 对MRC和ARC的理解

      本文链接:https://www.haomeiwen.com/subject/tcyqfltx.html