strongSelf问题
来源:7-5 Block循环引用相关面试问题&面试总结

hazel_zzz
2020-05-05
__weak __typeof(self)weakSelf = self;
_xBlock = ^() {
__strong __typeof(weakSelf)strongSelf = weakSelf;
[strongSelf doSomething];
[strongSelf doOtherthing];
};
_xBlock();
如果xBlock执行时,self已经被释放那么weakSelf为nil,strongSelf也为nil。
所以strongSelf只能保证当weakSelf有值的情况下,之后self不会被释放。
老师请问这么理解对么?
写回答
1回答
-
理解的没问题。一般在block里再强引用下的目的往往是保证在block执行过程中是一直有值的。如果不这样做的话,如在多线程执行环境可能doSomething调用时self有值,doOtherThing方法调用时,self没有值,这通常不是我们期许的结果
10
相似问题