首页 > 代码库 > block的循环引用
block的循环引用
1、创建block用copy修饰,拷贝到堆上
2、之前一直用这种写法,但会碰到提前释放的状态
__weak typeof(self)wakeself = self;
3、就用弱指针指向self,在block内部对weakSelf产生一个强引用,就解决了提前释放的问题
@weakify(self);
@strongify(self);
例如:
__weak __typeof(self) weakSelf = self;
self.block = ^{
__strong __typeof(weakSelf) strongSelf = weakSelf;
[strongSelf doSomething1];
[strongSelf doSomething2];
}
或者
#define WEAKSELF __weak typeof(self)weakSelf =self
#define StrongSelf __strong typeof(weakSelf) strongSelf = weakSelf
使用:
WEAKSELF;
[_cell setBurstBlock:^(NSInteger leftTag) {
StrongSelf;
[strongSelf showNavigationView:[GoodsViewController new]];
}];
block的循环引用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。