自动释放池是什么,如何工作

 我来答
求巧苼0g6bce
推荐于2017-09-05 · TA获得超过411个赞
知道答主
回答量:187
采纳率:0%
帮助的人:57.4万
展开全部
一、什么是自动释放池
  1、Autorelease pool
  自动释放池(Autorelease pool)是OC的一种内存自动回收机制,可以将一些临时变量通过自动释放池来回收统一释放
  自动释放池本事销毁的时候,池子里面所有的对象都会做一次release操作
  2、autorelease
  任何OC对象只要调用autorelease方法,就会把该对象放到离自己最近的自动释放池中(栈顶的释放池)。
二:O-C当中的内存释放,并不是像java/.net那样有一个自动的释放池,开发人员不用去关心有关内存释放的问题,O-C里面的自动释放池比c语言的手动内存管理要好一些,但是相对于java/.net来说又弱一些,所以说O-C当中的释放属于半自动的释放池。
三、如何创建一个自动释放池
//ios5.0新方式
@autoreleasepool
{
}
//ios5.0之前的老方式
NSAutoreleasePool *pool=[[NSAutoreleasePool alloc]init];
[pool release];
四、自动释放池如何释放对象内存
  黄金法则:如果对一个对象使用了alloc,[mutable]copy,retain,那么必须使用相应的release或者autorelease.
唐经理
2024-12-18 广告
1.根据实际的现场情况,确定设备间安装、地面安装或设备坑安装等安装方式。同时,考虑现场设备的安装空间限制,选择合适尺寸的设备,必要时可选择定制。2.确保安装位置平整坚实,满足设备的承重荷载要求。对于需要混凝土基础的设备,应进行基础施工,并确... 点击进入详情页
本回答由唐经理提供
百度网友f7a3fd7
2015-11-10 · 超过13用户采纳过TA的回答
知道答主
回答量:25
采纳率:0%
帮助的人:23.3万
展开全部
这个是oc 中释放对象的,老版的系统使用mrc 方式来释放我们自己创建的对象,核心思想是计数器,使用自动释放池为你向这个池内所有的对象之行计数器减一操作,新版的代码使用arc ,就不需要考虑这些问题了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2015-10-26
展开全部
什么是自动释放池

  1、Autorelease pool

  自动释放池(Autorelease pool)是OC的一种内存自动回收机制,可以将一些临时变量通过自动释放池来回收统一释放

  自动释放池本事销毁的时候,池子里面所有的对象都会做一次release操作

  2、autorelease

  任何OC对象只要调用autorelease方法,就会把该对象放到离自己最近的自动释放池中(栈顶的释放池)。

如何创建一个自动释放池

//ios5.0新方式

@autoreleasepool

{

}

//ios5.0之前的老方式

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

[pool release];

自动释放池如何释放对象内存

  黄金法则:如果对一个对象使用了alloc,[mutable]copy,retain,那么必须使用相应的release或者autorelease.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
乐乐99457孜毡
2015-08-26 · TA获得超过166个赞
知道答主
回答量:150
采纳率:100%
帮助的人:72万
展开全部
当您向一个对象发送一个autorelease消息时,Cocoa就会将该对象的一个引用放入到最新的自动释放池。它仍然是个正当的对象,因此自动释放池定义的作用域内的其它对象可以向它发送消息。当程序执行到作用域结束的位置时,自动释放池就会被释放,池中的所有对象也就被释放。
1. ojc-c 是通过一种"referring counting"(引用计数)的方式来管理内存的, 对象在开始分配内存(alloc)的时候引用计数为一,以后每当碰到有copy,retain的时候引用计数都会加一, 每当碰到release和autorelease的时候引用计数就会减一,如果此对象的计数变为了0, 就会被系统销毁.
2. NSAutoreleasePool 就是用来做引用计数的管理工作的,这个东西一般不用管的.
3. autorelease和release没什么区别,只是引用计数减一的时机不同而已,autorelease会在对象的使用真正结束的时候才做引用计数减一.
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式