block用的越来越多
block被滥用
block被乱用
安全用法
现在总结一个安全可靠的使用方法:
__weak typeof(self) weakSelf = self;
void (^myBlock)(void) = ^{
__strong typeof(weakSelf) strongSelf = weakSelf;
// Do something
};
是的,就是这个模式:
- 在block外定义一个weak self.
- 在block内对weak self定义一个strong self。
快捷用法
可以添加两个宏定义:
/******************** 快速的定义一个weakSelf 用于block里面 ***************/
#define WS(weakSelf) __weak __typeof(self) weakSelf = self
#define SS(strongSelf) __strong __typeof(weakSelf) strongSelf = weakSelf;
使用的时候就比较方便:
WS(weakSelf);
void (^myBlock)(void) = ^{
SS(strongSelf);
// Do something
};
再也没有内存泄露,循环应用,提前释放的问题。 轻轻松松做程序员。
参考文献:
深入研究Block捕获外部变量和__block实现原理
深入研究Block用weakSelf、strongSelf、@weakify、@strongify解决循环引用