-
一个问题
假设b为一个block, a为b外的一个NSMutableArray对象,现在需要在b内调用[a addObject:...],那么在a定义的地方是否需要加__block的修饰符。 -
听我解释
__block 是修饰『变量的指向』是否可以被修改,意思是在 block外面变量 a 指向了一个对象,但是我需要在 block 中将这个变量重新指向其他对象。 -
举个栗子
正常运行。结果为:
a1:test p1:0x79e99e00
a2: p2:0x79e99e00
编译报错。如果改为
3.png正常运行,结果为:
a1:test p1:0x7c561940
a2: p2:0x7af6ba40
- 答案
回到之前的问题,由于在b内调用[a addObject:...]只是改变了a所指对象的『内容』,并没有改变变量 a 的『指向』,所以不需要在定义a的地方加__block的修饰符。
网友评论