在 iOS 块中如何在不使用 __block 的情况下修改外部变量

In iOS block how to modify variables outside without using __block

我读到如果 block 想在外部修改一个变量,这个变量必须使用关键字 __block 来描述,因为它必须用 block 本身复制到堆中。

但是如果我不想使用__block并且仍然可以修改变量,有什么办法吗?

我想了想也许我可以将该变量设置为 globalstatic 而不是 auto ,这样它将存储在静态内存区域中。

或者我可以将它设置为指针并指向分配在堆上的一些内容吗?我试过这种情况,但没有用,我想知道为什么。

本质上,为了避免丢失变量,如果您想访问和修改变量,block会将局部变量复制到堆上。但是如果你将变量设为全局或静态,这将存储在全局区域中,你不必担心它会在堆栈中丢失,块不会复制它但可以直接修改它。

如有错误请指正,如果没有更好的我会标上答案