ios学习记录 day20 OC 5

内存管理

闪退:1.内存泄露(不管理内存)

       2.内存过度释放

OC:1.手动管理内存(MRC)//弊端 容易过度释放

     2.自动管理内存(ARC)//弊端 错误都出在底层 不易查找

     垃圾回收//只限于MAC应用程序

 

手动管理内存:

引用计数增加:                                    引用计数减少:

+alloc//开辟内存     0 -> 1            |    

-retain                  +1                 |     -release    -1

-copy(只有字符串可以用)原来的不变 |    -autorelease//自动 延迟释放 在某个地方控制

                      新开辟内存 0 -> 1  |

 

内存管理:

        //1.内存的所有权:只有对内存有所有权的指针,才能够release 改变引用计数
        //alloc retain copy 都能使对象获得内存的所有权
        //release autorelease 都能使对象放弃内存的所有权
       
        //2.有创建就有回收,有+1就有-1
        //3.引用计数的概念:有多少个对象对内存有所有权
        //4.在一个方法/类中,内存的引用计数要保持平衡(+多少 -多少)     

        //5.dealloc方法 在对象的引用计数为0时,系统强制调用,用于回收内存
        //6.属性的内存管理 对象类型的属性,需要在dealloc中释放一次
        //7.自动释放池 负责释放池子范围内所有被标记为autorelease的对象 @autoreleasepool{}
        //如果是NSAutoreleasePool对象创建的池子,使用drain可以清空池子里的所有对象
        //8.构造器的内存管理 在返回这个对象的时候,使用autorelease自动释放池:

@autoreleasepool{

 

}

ios学习记录 day20 OC 5,,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。