A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

视频中老师没有提到很是好奇啊

12 个回复

倒序浏览
@autoreleasepool是ARC机制出现后才有的,是自动释放池,用来释放手动创建的对象的。当用户出发事件后,就会产生事件循环,事件循环开启后,系统会创建自动释放池,准备好,用来释放程序中创建的对象,当事件要结束时,自动释放池会清空其中的对象,然后自动销毁。ARC大大减少了程序猿对内存的管理。
回复 使用道具 举报 1 0
stonelv0101 发表于 2015-4-25 20:38
@autoreleasepool是ARC机制出现后才有的,是自动释放池,用来释放手动创建的对象的。当用户出发事件后,就 ...

不错,学习了,谢谢解答
回复 使用道具 举报
应该是对池中的对象引用统一做一次release操作,
回复 使用道具 举报
autoreleasepool自动释放池,通过自动资源释放池来管理对象,只需要一个自动释放池就可以管理很多对象,当自动释放池结束的时候,会自动向池中的每个对象都发送release消息。
回复 使用道具 举报
还没看到这里,加油了
回复 使用道具 举报
内存管理在Xcode中减少多了呀
回复 使用道具 举报
@autoreleasepool
{

}
这是一个自动释放池,只要是放在花括号里面的对象,在函数运行到第二个花括号结束,自动释放池就会自动销毁,然后将里面的所有对象做一次release操作,如果对象是在花括号外面,那么自动释放池对它没有作用
回复 使用道具 举报
都说的很好,创建一个自动销毁池子,然后再代码结束的时候对内部的对象做一次re le se,只是对对象的计数器减一,并不会销毁对象。
回复 使用道具 举报
用了ARC不是会自动做retain和release操作么。
ARC下加了@autoreleasepool和不加有什么区别?
回复 使用道具 举报
好厉害的感觉啊
回复 使用道具 举报
50mmf1.0 发表于 2015-5-3 17:52
用了ARC不是会自动做retain和release操作么。
ARC下加了@autoreleasepool和不加有什么区别? ...

autoreleasepool是延迟了release,因为它要等到池子销毁,才执行release操作。而ARC的工作原理是:只要没有强指针指向对象,就会释放对象。
可以看看这篇文章:http://www.onevcat.com/2012/06/arc-hand-by-hand/
希望对你有帮助!
回复 使用道具 举报

autorelease:
1.autorelease 返回值是id,返回对象本身。
2.autorelease 会将对象放到一个自动释放池,不是自动释放
3.当自动释放池被销毁时,会对池子里面的所有对象做一次release操作
4.@autoreleasepool{}从大括号开始代表创建了一个释放池,大括号结束代表销毁释放池
5.自动释放池可以创建无限多个
6.autorelease对对象计数器没有任何改变,只有大括号结束才调用release,改成0,释放
7.这些池子实际上是以栈的形式存放的(先进后出)
8.使用自动释放池后,省去了,对象调用必须写在release前的烦恼(不必关心它什么时候释放)
9.但是不能精确控制对象销毁时间,适用于占用内存比较小的数据,占内存大的不要乱用它
10.注意事项:
10.1.已经调用了autorelease的对象又调用release,会发生野指针错误
@autoreleasepool
{
        Person *p = [[[Person alloc] init] autorelease];
        [p release];
}
10.2.同样连续多次调用autorelease,也会发生野指针错误
@autoreleasepool
{
        Person *p = [[[[Person alloc] init] autorelease] autorelease];
}

11.在IOS程序运行过程中,会创建无数个池子。这些池子都是以栈结构存在(先进后出)
12.当一个对象调用autorelease方法时,会将这个对象放到栈顶的释放池
13.ios5.0之前
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
Person *p = [[[Person alloc] init] autorelease];
p.age = 10;
int a = p.age;
NSLog(@"age=%d", a);
[pool release];
希望对你有帮助!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马