Block 中 strongSelf 的问题

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

qq_老虎_daniu

2019-05-15

图片描述

老师, 可以解答下 为什么有的时候 block 用 weakself 就行, 而有的时候要在 用 strong 修饰下呢,

写回答

5回答

清风淡墨白

2021-12-04

简单说为了在调用block的时候,防止weakself被释放为nil,所以block里面加强一下 

0
0

瞅瞅

2019-11-27

我理解的外部__weak修饰,就如视频所说,是为了block捕获变量的弱引用,避免循环引用,避免内存泄漏。

内部__strong修饰,则是为了增加该变量的引用计数,避免其被提前释放,尤其在多线程切换的时候。否则后续的访问会出现野指针。

0
2
hazel_zzz
回复
j_________
“__strong __typeof(weakSelf)strongSelf = weakSelf;”如果weakSelf为nil,那strongSelf也会为nil。所以strongSelf只能保证当weakSelf有值的情况下,之后self都不会被释放。请问这么理解对么?
2020-05-05
共2条回复

qq_老虎_daniu

提问者

2019-05-15

//img.mukewang.com/szimg/5cdc28610001ff9414920492.jpg

还有就是老师, 有的时候, 为啥 还能用 self 呢,  这是sdwebimage里的代码

0
1
清风淡墨白
dispatch_async的block不会造成循环引用
2021-12-04
共1条回复

qq_老虎_daniu

提问者

2019-05-15

有的在Block 里边 用了 

__strong typeof(weakSelf) strongSelf = weakSelf;

, 不知道什么时候用 这个 

0
0

qq_老虎_daniu

提问者

2019-05-15

//img.mukewang.com/szimg/5cdbf6390001ed6214800578.jpgAFnetworking 中的用法

0
0

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

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

1749 学习 · 600 问题

查看课程