ARC下的block导致的循环引用问题解析

1.在ARC下面使用block,无论怎样,你都需要注意这几点:

  • 外部对象进入block,请使用__weak修饰后再进入到block中

  • 不要在block中初始化对象,请在block的外面初始化对象后再进入到block中去

  • 无论该block是不是copy的,请都当做copy的block来处理

  • 传入到堆区block中的对象会被强引用

2.Block的类型与内存管理

  • 据Block在内存中的位置分为三种类型NSGlobalBlock,NSStackBlock, NSMallocBlock。

    • NSGlobalBlock:类似函数,位于text段;
    • NSStackBlock:位于栈内存,函数返回后Block将无效;
    • NSMallocBlock:位于堆内存。
  • 此处我们可以得知,在处理对象时,block会malloc的.

  • :这种block会导致_model对象泄露吗?

  • 问:方法中的block是怎么回事呢?

  • :MRC中的__block与ARC中的__weak有啥联系?

    • 在MRC中, __block 可以让一个变量在 block 中进行修改而不会被这个 block retain.

    • 在ARC中, __weak 才能让一个变量在 block 中不被这个block强引用.

    • __block是在MRC中使用的.

    • __weak是在ARC中使用的.

转载于:https://juejin.im/post/5b8f801c6fb9a05cdb100ff9

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值