在block内部使用外部指针且会造成循环引用情况下,需要用__weak修饰外部指针
__weak typeof(self) weakSelf = self;
在block内部如果调用了延时函数还使用弱指针会取不到该指针,因为已经被销毁了,需要在block内部再将弱指针重新强引用一下__strong typeof(self) strongSelf = weakSelf;
int a = 5;
int(^test)(int)=^(int a){
a=a+3;
return a+3;
}
a=20;
NSLog(@"%d",test(a));输入是26。
当block内部需要修改外部变量时需要用__block来修饰
int __block b = 3;
int(^test)(int)=^(int c){
b = b+c;
return b;
}
NSLog(@"%d",test(4));