美文网首页
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);

            

    相关文章

      网友评论

          本文标题:OC中内存管理

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