标签: objective-c cocoa-touch objective-c-blocks
我可以在堆栈上使用__block说明符指定一个变量,然后我就可以在一个块中修改它。我只是想知道,幕后会发生什么? (如果将来某个时间执行该块,则可能会清除堆栈)
__block
答案 0 :(得分:4)
当复制引用__block变量的块时,该变量将移动到堆中。这意味着引用它的所有代码都必须通过间接方式(通常是指针)来实现,这样当它从堆栈移动到堆时,这些引用可以随之切换。
记录在案here。