在 iOS 块中如何在不使用 __block 的情况下修改外部变量
In iOS block how to modify variables outside without using __block
我读到如果 block 想在外部修改一个变量,这个变量必须使用关键字 __block
来描述,因为它必须用 block 本身复制到堆中。
但是如果我不想使用__block
并且仍然可以修改变量,有什么办法吗?
我想了想也许我可以将该变量设置为 global
或 static
而不是 auto
,这样它将存储在静态内存区域中。
或者我可以将它设置为指针并指向分配在堆上的一些内容吗?我试过这种情况,但没有用,我想知道为什么。
本质上,为了避免丢失变量,如果您想访问和修改变量,block会将局部变量复制到堆上。但是如果你将变量设为全局或静态,这将存储在全局区域中,你不必担心它会在堆栈中丢失,块不会复制它但可以直接修改它。
如有错误请指正,如果没有更好的我会标上答案
我读到如果 block 想在外部修改一个变量,这个变量必须使用关键字 __block
来描述,因为它必须用 block 本身复制到堆中。
但是如果我不想使用__block
并且仍然可以修改变量,有什么办法吗?
我想了想也许我可以将该变量设置为 global
或 static
而不是 auto
,这样它将存储在静态内存区域中。
或者我可以将它设置为指针并指向分配在堆上的一些内容吗?我试过这种情况,但没有用,我想知道为什么。
本质上,为了避免丢失变量,如果您想访问和修改变量,block会将局部变量复制到堆上。但是如果你将变量设为全局或静态,这将存储在全局区域中,你不必担心它会在堆栈中丢失,块不会复制它但可以直接修改它。
如有错误请指正,如果没有更好的我会标上答案