__weak 造成的提前释放
作者:互联网
对象提前释放问题
代码
#define WeakSelf(type) __weak typeof(type) weak##type = type;
#define StrongSelf(type) __strong typeof(type) type = weak##type;
LBWeakModel *model = [[LBWeakModel alloc] init];
WeakSelf(model);
model.block = ^{
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"啦啦啦啦%@",weakmodel);
});
NSLog(@"嘿嘿嘿%@",weakmodel);
};
model.block();
发现在block 中的dispatch_async 中获取 该对象的时候,已经为空了
解决方法
使用__strong
原理
这个strong是对block内部的强引用,不会干扰到block以外.所以不会影响LBWeakModel 的释放
标签:__,释放,weak,dispatch,model,type,block 来源: https://blog.csdn.net/LIUXIAOXIAOBO/article/details/120809165