__block与__weak


__block

block可以访问局部变量,但是是不能修改的,如果想要修改局部变量,需要加__block 修饰局部变量
代码为:

` __block int multiplier = 7;
     int (^myBlock)(int) = ^(int num) {
         multiplier ++;
         return num * multiplier;
     };`

__weak

weak typeof(&self)weakSelf = self; 等同于 __weak UIViewController weakSelf = self;
block是通过引用来访问self的实例变量,self被retain,block也是一个强引用,硬气循环引用,用weak是弱引用,当self释放的时候,weakSelf已经等于nil