block 在ARC和非ARC下的不同含义

Block的循环引用

对于非ARC下, 为了防止循环引用, 我们使用__block来修饰在Block中使用的对象:

对于ARC下, 为了防止循环引用, 我们使用__weak来修饰在Block中使用的对象。原理就是:ARC中,Block中如果引用了__strong修饰符的自动变量,则相当于Block对该变量的引用计数+1。