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

时间:2016-07-22 03:32:43

标签: ios block

我读到如果块想要修改外部变量,则必须使用关键字__block来描述此变量,因为它必须使用块本身复制到堆。

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

我做了一些思考,也许我可以将该变量设置为globalstatic而不是auto,以便将其存储在静态内存区域。

或者我可以将其设置为指针并指向在堆上分配的某些内容吗?我试过这个没用的情况,我想知道原因。

1 个答案:

答案 0 :(得分:0)

基本上,为了避免丢失变量,如果您想访问和修改变量,block会将局部变量复制到堆上。但是如果你将变量设置为全局变量或静态变量(存储在全局区域中并且你不必担心在堆栈上丢失它),则阻止它不会复制它但是能够直接修改它。

如果有任何错误,请纠正我,如果没有更好的话,我会给自己回答。