Block的循环引用
如果在Block中使用_strong修饰符的对象类型自动变量,当block从栈复制到堆时,该对象为Block所持有。这样就容易引起循环引用。
为了避免循环引用可以使用_block变量、_weak修饰符以及_unsafe_unretained修饰符。
_block和_weak的区别:
1._block可以修饰对象,也可以修饰基本类型。
2._weak只可以修饰对象。
3._block在block中可以被重新赋值,_weak不可以。
_unsafe_unretained不会被自动置空为nil。