zoukankan      html  css  js  c++  java
  • 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{

    }

  • 相关阅读:
    netty用户退出,网络断开,重连删除用户信息
    netty的 ctx.writeAndFlush()方法
    netty实现动态定时器
    springboot java.sql.SQLException: sql injection violation, multi-statement not allow : update XXX(table)
    SpringBoot用流多次读取request请求中的数据
    mysql分组统计,按照时间排序
    Flash Player离线安装包下载指南
    maven pom.xml配置详解
    oracle 权限管理
    Oracle 表空间管理
  • 原文地址:https://www.cnblogs.com/lxllanou/p/3628612.html
Copyright © 2011-2022 走看看