Block注意事项

作者: Mister_Mask | 来源:发表于2016-12-04 22:37 被阅读39次

1.block是存储在堆中还是栈中?

默认情况下block在栈中,但是如果对block进行了一个copy操作,block会转移到堆中

如果block在栈中,block访问了外界的对象,那么不会对对象进行retain操作

如果block在堆中,block访问了外界的对象,那么会对对象进行一次retain操作

如果给外界的对象加上了__block,那么就算block在堆中,也不会对外界对象进行一次retain操作

2.为什么给外界变量加上__block就能修改外界变量的值?

因为__block进行的是地址传递,所以可以在block中修改外界变量的值,默认情况下block不能修改外界变量的值,因为他进行的是copy操作

相关文章

  • Block注意事项

    1.Block注意事项 在block内部可以访问block外部的变量 block内部也可以定义和block外部的同...

  • OC - Block

    导读: 一、Block是什么 二、Block的特点和作用 三、Block的声明、定义及注意事项 四、如何使用Blo...

  • Block

    常用写法: OC中: Swift中: 注意事项: block默认存储在栈中,如果对block进行copy操作,bl...

  • OC语言day06-15Block注意事项

    pragma mark Block注意事项 pragma mark 概念 pragma mark 代码 Perso...

  • iOS之轻松上手block(下)

    导语 在上一篇文章《iOS之轻松上手block(上)》中,笔者已经讲述了block的使用与注意事项,此文继续讲解b...

  • Block注意事项

    1.block是存储在堆中还是栈中? 默认情况下block在栈中,但是如果对block进行了一个copy操作,bl...

  • block注意事项

    1、在使用block前需要对block指针做判空处理 2、block如果作为属性变量时,要copy一下,将栈上的b...

  • NSAlert

    注意事项: 执行run Modal 会block 主线程等alert 退出modal 状态之后,主线程恢复运行。m...

  • Block使用注意事项

    block(块)的本质是什么? 在本质上是一个指向结构体的指针,能将函数作为变量、参数来传递。 block通俗点儿...

  • block-注意事项

    block的变量传递如下例子分别声明一个局部变量、一个__block修饰的局部变量、一个静态变量和一个全局变量,并...

网友评论

    本文标题:Block注意事项

    本文链接:https://www.haomeiwen.com/subject/uafkmttx.html