您的位置:首页 > 其它

arc mrc 自动释放 内存

2016-01-29 11:33 211 查看
arc 和mrc

大多数现在经常用的是arc这里只说arc

mac里有dealloc arc里是否会用到dealloc ,

:会用到,一般不会需要,特殊情况下需要,,比如在页面关闭的时候释放掉某些资源(如果你想知道什么资源,:任何你想释放的)不需要写[super dealloc]

arc下 对象什么时候会被释放

:一个对象如果没有被强指针指向的情况下释放

arc 优缺点,

:不用在考虑去写release ,但是不知道何时会释放大型数据会长期占用内存(如果你想知道怎么释放:任何你认为该释放的时候都可以释放)

讲解下自动释放池机制

:自动释放池是NSAutoreleasePool的事例,其中包含了收到的autorelease的对象。当一个自动释放池自身被销毁(dealloc)时,池中每一个对象会收到一个release,自动释放池里的对象会存活到自动释放池销毁的时候。

每一个事件周期的开始,系统会自动创建一个自动释放池,每一个事件周期结束,会销毁这个自动释放池。可以理解为,你的代码正常的持续运行时,自动释放池是不会销毁的,你可以安全的使用池中的对象。自动释放会帮助你节省一些代码量,提高开发速度,但是会造成大量没有释放的对象,会占用大量内存资源。因此如果避免大量对象对自动释放,你需要手动销毁自动释放池。对于以下两个情况必须手动解决1,开启其他线程时(系统只会对主线程生成销毁自动释放池) 2,短时间内造成大量对象时。

http://clang.llvm.org/docs/AutomaticReferenceCounting.html(解释arc 全英文)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: