美文网首页
关于_ _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的修饰符。

    相关文章

      网友评论

          本文标题:关于_ _Block

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