__block说明符如何工作?

时间:2012-04-22 12:04:20

标签: objective-c cocoa-touch objective-c-blocks

我可以在堆栈上使用__block说明符指定一个变量,然后我就可以在一个块中修改它。我只是想知道,幕后会发生什么? (如果将来某个时间执行该块,则可能会清除堆栈)

1 个答案:

答案 0 :(得分:4)

当复制引用__block变量的块时,该变量将移动到堆中。这意味着引用它的所有代码都必须通过间接方式(通常是指针)来实现,这样当它从堆栈移动到堆时,这些引用可以随之切换。

记录在案here