arc mrc 自动释放 内存

来源:互联网 发布:分布式架构 java 编辑:程序博客网 时间:2024/05/20 07:58

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 全英文)




0 0
原创粉丝点击