采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师, 可以解答下 为什么有的时候 block 用 weakself 就行, 而有的时候要在 用 strong 修饰下呢,
简单说为了在调用block的时候,防止weakself被释放为nil,所以block里面加强一下
我理解的外部__weak修饰,就如视频所说,是为了block捕获变量的弱引用,避免循环引用,避免内存泄漏。
内部__strong修饰,则是为了增加该变量的引用计数,避免其被提前释放,尤其在多线程切换的时候。否则后续的访问会出现野指针。
补充: 内部__strong修饰,可以在执行到block的时候增加该变量的引用计数,避免在block执行时变量被释放,尤其在多线程切换的时候。否则后续的访问会出现野指针。block执行结束时,会执行[strongSelf release]。
“__strong __typeof(weakSelf)strongSelf = weakSelf;”如果weakSelf为nil,那strongSelf也会为nil。所以strongSelf只能保证当weakSelf有值的情况下,之后self都不会被释放。请问这么理解对么?
还有就是老师, 有的时候, 为啥 还能用 self 呢, 这是sdwebimage里的代码
dispatch_async的block不会造成循环引用
有的在Block 里边 用了
__strong typeof(weakSelf) strongSelf = weakSelf;
, 不知道什么时候用 这个
AFnetworking 中的用法
登录后可查看更多问答,登录/注册
从BAT/TMD名企真题入手,结合源码及应用,构建完整iOS知识体系
1.3k 11
1.8k 9
1.2k 9
999 8
950 8