block

1. block是一种数据类型

block是一种数据类型.png

2. 在block中访问外界变量

  • 外界变量不带 __block,是值传递

    不加__block是值传递.png

  • 外界变量带__block的,是址传递

    加了__block是址传递.png

3. 在block中访问外界对象

  • block在栈中,外界对象不加__block,不会retain

    默认情况block存放在栈中,在栈中存放的block访问外界对象不会进行retain.png

  • block在堆中,外界对象不加__block,会retain

    对block进行copy,block会转存到堆中,在堆中的block引用外界变量会对对象进行retain.png

  • block访问外界加__block修饰的对象,都不会retain

    在block中访问外界对象,一定要给对象加上__block,否则会造成内存泄漏.png

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容