240 发简信
IP属地:江苏
  • @sephilex 直接赋值整个app生存期间都会循环引用,weak-strong只有block执行时短暂“循环引用”(如果self没有被释放),block执行完成“循环引用”解除。

    OC中Block使用了__weak和__strong依然不会循环引用原因

    关于使用__weak和__strong 大家都看到别人在block里面使用self或者self的属性的时候要使用__weak修饰self,然后才能block里面使用,在blo...

  • @sephilex 会,所以才能保证全程为nil或全程有值,但它是block作用域的自动变量(局部变量),在当前栈上分配,block执行完成弹回上一个栈帧位置,当前栈帧上分配的变量自动作废(回收),引用减1,避免了循环引用。

    OC中Block使用了__weak和__strong依然不会循环引用原因

    关于使用__weak和__strong 大家都看到别人在block里面使用self或者self的属性的时候要使用__weak修饰self,然后才能block里面使用,在blo...

  • @sephilex 一,赋值给strongself相当于直接使用self,会导致self引用加+1,二,直接在block中使用weak self,可能会出现block前半段代码有值,后半段为nil的情况。三,使用weak-strong方法,如果block执行前self已经为nil,那么从weak表中取出的self也会为nil,这样能保证block中的self要么全程为nil,要么全程有值。

    OC中Block使用了__weak和__strong依然不会循环引用原因

    关于使用__weak和__strong 大家都看到别人在block里面使用self或者self的属性的时候要使用__weak修饰self,然后才能block里面使用,在blo...