关于_ _Block

  • 一个问题
    假设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的修饰符。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容