ma1*_*w28 5 objective-c objective-c-blocks automatic-ref-counting
__block当您在块内更改变量(在块外声明)指向的地址时,将使用AFAIK .
但是,如果我更改变量指向的值但指针保持不变,该怎么办?例如,如果我有NSMutableArray *array并且我刚刚[array addObject:object]在块内做什么呢?在这种情况下,我没有更改指针array,但我正在更改它指向的值.那么,我还必须用于__block宣告NSMutableArray *array吗?
bbu*_*bum 19
只有__block在更改变量的值时才需要.
即如果你有:
NSArray* foo;
Run Code Online (Sandbox Code Playgroud)
只有__block在更改值时才需要foo.现在,请记住,这foo只不过是"指向所输入事物的指针NSArray".即 foo实际上是64位或32位整数,具体取决于平台.如果你改变那个整数,你需要__block.如果你不这样做,你就不需要了__block.
所以,不,你不需要__block调用addObject:数组,因为你实际上并没有改变它的值foo.
如果你要做类似的事情foo = (expression);,那么你需要__block.
(请注意,这是为什么在OO下进行并发编程非常困难的原因之一...为任何给定的执行路径定义"方差域"非常困难)
| 归档时间: |
|
| 查看次数: |
1834 次 |
| 最近记录: |