block在arc中和mrc中的用法有啥区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了block在arc中和mrc中的用法有啥区别相关的知识,希望对你有一定的参考价值。

block在ARC和MRC中的声明引用有些区别.

1、 block可以存储在栈中,也可以在堆中
2、默认存储在栈中,不需要管理内存
3、存储在堆中的block会对block进行retain操作
4、(MRC)block在堆中时,不想对block进行retain操作,前面加__block
5、(ARC)前面加__weak或__unsafe_unretained
参考技术A 1.对于没有引用外部变量的Block,无论在ARC还是非ARC下,类型都是__NSGlobalBlock__,这种类型的block可以理解成一种全局的block,不需要考虑作用域问题。同时,对他进行Copy或者Retain操作也是无效的;
  2.应注意避免循环引用。

以上是关于block在arc中和mrc中的用法有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

OC中的block

Block内存管理

__block 和__weak

iOS 中 ARC 项目 兼容 MRC

OC 内存管理:MRC与ARC

block