据我所知,当您在块内更改变量(在块外声明)指向的地址时,会使用
但是,如果我更改变量指向的值而指针保持不变呢?比如说,如果我有一个
__block
。但是,如果我更改变量指向的值而指针保持不变呢?比如说,如果我有一个
NSMutableArray *array
,并且在块内只是执行[array addObject:object]
,那么这种情况下,我没有改变指针array
,但是我改变了它所指向的值。所以,在声明NSMutableArray *array
时,是否仍然必须使用__block
呢?
__block
可能会提示对象永远不会改变,如果NSArray
被内联,后续对 capacity 的调用可能会出错。 - Daniel__block
表示变量可以修改。无论变量是__block
还是常量副本(默认情况下),在对象上调用方法都不会受到影响。 - bbumself.foo = ...;
,那么不需要__block
,因为这是一个方法调用。也不需要直接修改实例变量(因为对 ivar 的引用是通过 self 进行的)。 - bbum