• 自动释放池的使用


    //6.关闭ARC后,使用形式则不同,建立一个或多个自动释放池

        //只有放入自动释放池中的对象,使用[pool drain]时对象的引用技术才会-1

        NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

        ABC *abc = [[ABC alloc]init];

        NSLog(@"初始化对象以后的引入计数器数%lu",[abc retainCount]);

        [pool drain]; //关闭释放池

        NSLog(@"释放自动释放池以后的引入计数器数%lu",[abc retainCount]);

        //只有将对象添加到自动释放池后才能释放对象

        pool = [[NSAutoreleasePool alloc]init];

        [abc autorelease];  //将对象放入自动释放池

        NSLog(@"对象放入自动释放池以后的引入计数器数%lu",[abc retainCount]);

        //retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1

        [abc retain];

        NSLog(@"对象进行retain以后的引入计数器数%lu",[abc retainCount]);

        [pool drain];

        NSLog(@"释放自动释放池以后的引入计数器数%lu",[abc retainCount]);




    输出结果 : 

    2015-11-10 23:30:29.104 内存管理[62729:14089337] 初始化对象以后的引入计数器数1

    2015-11-10 23:30:29.105 内存管理[62729:14089337] 释放自动释放池以后的引入计数器数1

    2015-11-10 23:30:29.105 内存管理[62729:14089337] 对象放入自动释放池以后的引入计数器数1

    2015-11-10 23:30:29.106 内存管理[62729:14089337] 对象进行retain以后的引入计数器数2

    2015-11-10 23:30:29.106 内存管理[62729:14089337] 释放自动释放池以后的引入计数器数1

    Program ended with exit code: 0


    可以选择,但是别选择放弃
  • 相关阅读:
    shell 如何避免误删目录
    Linux 禁止用户或 IP通过 SSH 登录
    gitlab不能启动了
    清空分区表里某个分区的数据
    mysql错误Table ‘./mysql/proc’ is marked as crashed and should be repaired
    MySQL Server参数优化
    linux下删除乱码文件、目录
    ERROR 1044 (42000): Access denied for user 'root'@'localhost'
    awk 打印从某一列到最后一列的内容
    连接和关闭资源工具类
  • 原文地址:https://www.cnblogs.com/hangdada/p/4982991.html
Copyright © 2020-2023  润新知