gpt4 book ai didi

objective-c - ARC 会告诉我什么时候必须使用 __block 吗?

转载 作者:太空狗 更新时间:2023-10-30 03:46:55 26 4
gpt4 key购买 nike

AFAIK,__block 用于在 block 内更改变量(在 block 外声明)指向的地址。

但是,如果我要更改变量指向的值但指针保持不变怎么办?例如,如果我有 NSMutableArray *array 并且只是在 block 内执行 [array addObject:object] 怎么办?在本例中,我没有更改指针 array,而是更改了它指向的值。那么,我是否仍必须在声明 NSMutableArray *array 时使用 __block

最佳答案

你只需要__block如果您要更改变量的值。

即如果你有:

NSArray* foo;

你只需要__block如果您更改 foo 的值.现在,记住 foo只不过是“指向输入 NSArray 的东西的指针”。 IE。 foo实际上是 64 位或 32 位整数,具体取决于平台。如果更改该整数,则需要 __block .如果不这样做,则不需要 __block .

所以,不,你不需要 __block调用addObject:在数组上,因为您实际上并没有更改 foo 的值.

如果您要执行类似 foo = (expression); 的操作, 那么你需要 __block .

(请注意,这是 OO 下的并发编程如此困难的原因之一……为任何给定的执行路径定义“差异域”异常困难)

关于objective-c - ARC 会告诉我什么时候必须使用 __block 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7439318/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com