热门搜索 :
考研考公
您的当前位置:首页正文

Block中内存泄露问题

来源:东饰资讯网

内存泄露不仅存在于MRC(MannulReference Counting)中,而且也存在于ARC(Automatic Reference Counting)也存在内存泄露问题。

注意:Xcode 4.1及其以前版本没有ARC

自从我们使用了ARC,代码写起来方便了很多,我们写不需要retain,release,dealloc了,但是有些特殊情况我们需要写dealloc方法,例如:当我们使用 通知 ,KVO的时候我们需要在dealloc方法中移除观察者,这时候我们不需要写[super dealloc]。而在ARC中最常见的内存泄露地方之一就是在Block中。

如果你不打印一下dealloc中的信息,也许你还真的不知道你的controller,view等等资源没有释放。很多问题都可能造成资源不能够及时释放。其中有一个很容易忽略的问题,block会自动retain你的变量。

通常来说,block都是一些简短代码片段的封装,适用做工作单元,通常用来做并发任务、遍历以及回调。

特别注意:

1、block需要注意的一个特性就是"Variable Capturing",直译过来就是捕捉变量。

2、block会将“捕捉”到的变量复制一份,然后对复制品进行操作,这是非常重要的一点

Top