内存泄露不仅存在于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会将“捕捉”到的变量复制一份,然后对复制品进行操作,这是非常重要的一点