美文网首页
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开发 - 对MRC和ARC的理解

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