1.使用场景:一般在一个函数的前面和后面都是重复性的东西,只有中间变化,一般使用block
2.注意事项
01:可以访问外面的变量(作用域问题)
02.里外变量同名的时候,访问里面那个(就近原则)
03.可以访问外面的变量,但是不能改外面的值,因为不是同一个地址(只是copy了一份,值传递)
04.想要改变外面变量的值,需要 变量前 加上 _block (地址传递)
05.block类型存放位置:默认是栈,对block进行copy时,放在碓中
在栈中时,访问外面对象,不会对对象 retain一次
copy后在堆中时,会对对象进行retain一次,造成内存泄漏,不=0
解决方案:对对象进行 _block, 这样不管在堆还是栈,都不会retain一次
参考资料: