我读到如果块想要修改外部变量,则必须使用关键字__block
来描述此变量,因为它必须使用块本身复制到堆。
但是,如果我不想使用__block
并仍然可以修改变量,那会有什么办法呢?
我做了一些思考,也许我可以将该变量设置为global
或static
而不是auto
,以便将其存储在静态内存区域。
或者我可以将其设置为指针并指向在堆上分配的某些内容吗?我试过这个没用的情况,我想知道原因。
答案 0 :(得分:0)
基本上,为了避免丢失变量,如果您想访问和修改变量,block会将局部变量复制到堆上。但是如果你将变量设置为全局变量或静态变量(存储在全局区域中并且你不必担心在堆栈上丢失它),则阻止它不会复制它但是能够直接修改它。
如果有任何错误,请纠正我,如果没有更好的话,我会给自己回答。