block在ARC和MRC中的声明引用有些区别.
1、 block可以存储在栈中,也可以在堆中
2、默认存储在栈中,不需要管理内存
3、存储在堆中的block会对block进行retain操作
4、(MRC)block在堆中时,不想对block进行retain操作,前面加__block
5、(ARC)前面加__weak或__unsafe_unretained
1.对于没有引用外部变量的Block,无论在ARC还是非ARC下,类型都是__NSGlobalBlock__,这种类型的block可以理解成一种全局的block,不需要考虑作用域问题。同时,对他进行Copy或者Retain操作也是无效的;
2.应注意避免循环引用。