Block循环引用

Block的循环引用

  如果在Block中使用_strong修饰符的对象类型自动变量,当block从栈复制到堆时,该对象为Block所持有。这样就容易引起循环引用。

为了避免循环引用可以使用_block变量、_weak修饰符以及_unsafe_unretained修饰符。 

_block和_weak的区别:

1._block可以修饰对象,也可以修饰基本类型。

2._weak只可以修饰对象。

3._block在block中可以被重新赋值,_weak不可以。

_unsafe_unretained不会被自动置空为nil。

你可能感兴趣的:(Block循环引用)