相同点:
1、__block对象在block中不会被block强引用一次,__weak对象相当于weak的property,所以两个均不会出现循环引用的问题
2、__block和__weak修饰的对象,在其没有任何强引用的时候,弱引用指针也会被设为nil
不同点
1、__block不管是在ARC还是MRC模式下都可以使用,可以修饰对象,还可以修饰基本类型,__weak只能在ARC下使用,也只能修饰对象,不能修饰基本数据类型
2、__block对象在block中被重新赋值,__weak则不可以
PS:__unsafe_unretained修饰符可以被视为iOS SDK 4.3以前版本的__weak的替代品,不过不会被自动置空为nil。所以尽可能不要使用这个修饰符。