开发者社区 问答 正文

解决循环引用时为什么要用__strong、__weak修饰?

解决循环引用时为什么要用__strong、__weak修饰?

展开
收起
montos 2020-04-13 20:55:51 1254 分享 版权
1 条回答
写回答
取消 提交回答
  • __weak修饰的变量,不会出现引用计数+1,也就不会造成block强持有外部变量,这样也就不会出现循环引用的问题了。

    但是,我们的block内部执行的代码中,有可能是一个异步操作,或者延迟操作,此时引用的外部变量可能会变成nil,导致意想不到的问题,而我们在block内部通过__strong修饰这个变量时,block会在执行过程中强持有这个变量,此时这个变量也就不会出现nil的情况,当block执行完成后,这个变量也就会随之释放了。

    2020-04-13 20:56:00
    赞同 展开评论
问答地址: