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回答

于海

2020-05-05

理解的没问题。一般在block里再强引用下的目的往往是保证在block执行过程中是一直有值的。如果不这样做的话,如在多线程执行环境可能doSomething调用时self有值,doOtherThing方法调用时,self没有值,这通常不是我们期许的结果

1
0

资深大牛带你深度剖析ios高级面试

从BAT/TMD名企真题入手,结合源码及应用,构建完整iOS知识体系

1749 学习 · 600 问题

查看课程