zoukankan      html  css  js  c++  java
  • iOS 内存管理arc

    http://www.tekuba.net/program/346/

    ios自动释放池(autoreleasepool

    1. #import <Foundation/Foundation.h>  
    2.   
    3. @interface Test : NSObject  
    4. @end  
    5.   
    6. @implementation Test  
    7. @end  
    8.   
    9.   
    10. int main (int argc, const char * argv[]) {  
    11.       
    12.     NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];  
    13.     Test *test = [[Test alloc]init];  
    14.       
    15.     NSLog(@"对象初始化以后的引用计数为:%x",[test retainCount]);  
    16.       
    17.     [pool drain];  
    18.     NSLog(@"释放自动释放池以后,对象的引用计数为:%x",[test retainCount]);  
    19.       
    20.     pool = [[NSAutoreleasePool alloc]init];  
    21.     [test autorelease];  
    22.     NSLog(@"将对象添加到自动释放池以后的引用计数为:%x",[test retainCount]);  
    23.       
    24.     [test retain];  
    25.     NSLog(@"对象进行retain后的引用计数为:%x",[test retainCount]);  
    26.       
    27.     [pool drain];  
    28.     NSLog(@"释放自动释放池以后,对象的引用计数为:%x",[test retainCount]);  
    29.       
    30.     [test release];  
    31.     return 0;  
    32. }  


    通过使用autorelease,该对象就被放入自动释放池,系统自动跟踪每个对象的使用情况,并在释放自动释放池时,释放池中所有对象。

    上面这一段代码是书上的,但很好说明了autoreleasepool的用法,以前老师们常说不能死读书的,应是多思考,自己动手写实例,多提问,多讨论吧

    这里我把的思考写出来,供大家参考:

    1.autoreleasepool只能放也池中的对象起作用,我们手工管理内存它不管,也就是说手工或自动(系统)两套不同的机制;

    2.加入用[test autorelease],释放用pool drain

    3.autoreleasepool不是系统的垃圾收集功能(Garbage Colliction)


    4.aotoreleasepool到达底什么时候释放?是pool drain后就释放了吗?

    对于每一个Runloop, 系统会隐式创建一个Autorelease pool(自然会有多个Autorelease pool),这样所有的release pool会构成一个象CallStack一样的一个栈式结构,在每一个Runloop结束时,当前栈顶的Autorelease pool会被销毁,这样这个pool里的每个Object会被release。
    那什么是一个Runloop呢? 一个UI事件,Timer call, delegate call, 都会是一个新的Runloop。(暂没有在官方文档中找到这个解释)

  • 相关阅读:
    Ubuntu
    「日记」抑郁症
    [Ubuntu] 运行.AppImage格式文件
    [Database]Oracle数据库中concat和||的区别
    [Database] 不知道表名和字段查找值=1234的数据.
    [Windows]卸载Office 2016密钥
    [经验]怎么删除“通过QQ/TIM发送到”右键菜单
    Venom- Eminem
    粪便中的粪臭素稀释了以后会变成花香味
    #宽带选择# V2EX讨论
  • 原文地址:https://www.cnblogs.com/itlover2013/p/4488322.html
Copyright © 2011-2022 走看看