zoukankan      html  css  js  c++  java
  • 自动释放池的使用

    //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


    可以选择,但是别选择放弃
  • 相关阅读:
    .net core 3.1 新增过滤器(Filter)和拦截器(LogInterceptor)
    .net core 3.1 新增log4net 和 NLog
    .net core 3.1 jwt token授权
    IdentityServer4 之 Resource Owner Password Credentials 其实有点尴尬
    IdentityServer4 之Client Credentials走起来
    Hive 窗口函数sum() over()求当前行和前面n条数据的和
    机器学习-线性规划(LP)
    机器学习-KNN算法
    flume整合kafka
    学习kafka自己发生的几个小错误记录
  • 原文地址:https://www.cnblogs.com/hangdada/p/4982991.html
Copyright © 2011-2022 走看看