美文网首页
关于_ _Block

关于_ _Block

作者: 红鲤鱼绿鲤鱼与鱼 | 来源:发表于2016-10-19 22:23 被阅读72次
  • 一个问题
    假设b为一个block, a为b外的一个NSMutableArray对象,现在需要在b内调用[a addObject:...],那么在a定义的地方是否需要加__block的修饰符。

  • 听我解释
    __block 是修饰『变量的指向』是否可以被修改,意思是在 block外面变量 a 指向了一个对象,但是我需要在 block 中将这个变量重新指向其他对象。

  • 举个栗子

1.png

正常运行。结果为:
a1:test p1:0x79e99e00
a2: p2:0x79e99e00

2.png

编译报错。如果改为

3.png

正常运行,结果为:
a1:test p1:0x7c561940
a2: p2:0x7af6ba40

  • 答案
    回到之前的问题,由于在b内调用[a addObject:...]只是改变了a所指对象的『内容』,并没有改变变量 a 的『指向』,所以不需要在定义a的地方加__block的修饰符。

相关文章

  • iOS面试之Block大全

    Block Block内容如下: 关于Block 截获变量 __block修饰符 Block的内存管理 Block...

  • iOS面试之Block模块

    Block Block内容如下: 关于Block 截获变量 __block修饰符 Block的内存管理 Block...

  • 详细的探讨一下Block(讨论篇、基础篇、实质篇)

    章节目录 关于Block的讨论篇 Block的基础篇 Block的实质篇 讨论篇: 为什么要看Block? 为了更...

  • 关于block(4)

    关于block(4) 标签: iOS 技术 接上篇,我们继续探究block。 block的copy属性 研究到这里...

  • block

    一.关于block block是将函数及其执行上下文封装起来的对象。 __block_impl结构体为 block...

  • 关于Block

    转化前代码 用clang命令clang -rewrite-objc testBlockM.m 关注 isa:isa...

  • 关于Block

    1.Block基本用法: block声明返回值(^block变量名)(参数)void(^block)(); blo...

  • 关于block

    block是在iOS 4.0之后出现的,封装了一段代码并将这段代码当做变量,通过block()的方式进行回调,说白...

  • 关于block

    当引用到外部的变量 1 无__block关键字时,内部直接创建一个同名变量,然后赋值。所以内部变量的地址 跟外面是...

  • 关于Block

    前段时间深受block循环引用的毒害,花时间研究下。 一、Block是C语言的一种数据类型,是一段提前准备好的代码...

网友评论

      本文标题:关于_ _Block

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