美文网首页
OC中内存管理

OC中内存管理

作者: 落魄的iOS程序员 | 来源:发表于2021-03-25 11:38 被阅读0次

        在OC中内存管理MRC手动内存管理和ARC自动内存管理,ARC是从iOS 4.0开始,在iOS 4.0之前使用的都是MRC,内存需要靠程序员自己管理(如alloc一个对象在不使用的时候就要release),内存管理有以下准则:

        只要对象还在使用,那么对象就不能释放;

        如果你想使用该对象,就应该让该对象的引用计数+1;

        当你不再使用该对象的时候就应将其释放,应用计数-1;

        谁创建,谁管理,谁释放;

        有加就有减,应用计数-1并不代表该对象释放,只有引用计数为0才表示该对象释放,retainCount=0之后再retain不能是对象复活;

        iOS 4.0苹果推出了ARC之后,内存就不在需要程序员自己管理了,只要是强指针指向的对象都会被自动释放,所有继承NSObject的子类创建的对象默认都是强指针,除非使用__week修饰,__week修饰的对象是弱指针,不持有对象,所以不需要释放,ARC使用注意点:

        不允许调用对象的release方法;

        不允许调用对象的autorelease方法;

        重写父类的dealloc方法时候不掉用【super dealloc】;

        内存管理常出现的对象:

        1、野指针:指针变量没有被初始化或者指向的空间已经被释放;

        2、内存泄漏;

        3、僵尸对象:在堆区已经被释放的对象(retainCount=0);

        4、空指针:指针赋值为空(nil);

        

相关文章

  • iOS之从MRC到ARC内存管理详解

    概述 在iOS中开发中,我们或多或少都听说过内存管理。iOS的内存管理一般指的是OC对象的内存管理,因为OC对象分...

  • OC关于在MRC模式下的内存管理学习

    内存管理 管理范围 任何继承NSObject的对象 只有OC对象才需要进行内存管理的本质原理 1.OC对象在堆中 ...

  • iOS 中堆和栈的区别以及冒泡排序

    在引入堆和栈之前,先要知道,iOS中的内存管理范围: OC对象需要进行内存管理,非oc对象不需要进行内存管理,比如...

  • iOS 内存管理

    1、只有OC对象才需要进行内存管理 1、OC对象存在堆中 2、非OC对象存在栈中(内存会被系统自动收回) ...

  • OC中内存管理

    在OC中内存管理MRC手动内存管理和ARC自动内存管理,ARC是从iOS 4.0开始,在iOS 4.0之前...

  • 无标题文章

    简述OC中内存管理机制 管理机制:是使用一种叫做引用计数的机制来管理内存中的对象.OC中每个对象都对应着自己的引用...

  • 内存管理

    OC中的内存管理是通过引用计数技术实现的,所谓内存管理就是在合适的时机创建和销毁一个对象。 OC对象内存管理之MR...

  • 内存管理

    一.内存基本介绍 1、OC内存管理的基本概念 2、OC内存管理的范围​管理范围:管理任何继承自NSObject的对...

  • iOS的内存管理

    iOS OC对象的内存管理 在iOS中,使用引用计数来管理OC对象内存 一个新创建的OC对象引用计数默认是1,当引...

  • 内存管理

    目录一、内存分区 1、RAM和ROM 2、内存的五大分区二、内存管理 1、OC内存管理是指什么?OC内存管理的本质...

网友评论

      本文标题:OC中内存管理

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