【发布时间】:2012-04-22 12:04:19
【问题描述】:
我可以使用__block 说明符在堆栈上指定一个变量,然后我可以在一个块中对其进行修改。我只是想知道,幕后发生了什么? (如果该块在未来某个时间执行,那么堆栈可能会被清除)
【问题讨论】:
标签: objective-c cocoa-touch objective-c-blocks
我可以使用__block 说明符在堆栈上指定一个变量,然后我可以在一个块中对其进行修改。我只是想知道,幕后发生了什么? (如果该块在未来某个时间执行,那么堆栈可能会被清除)
【问题讨论】:
标签: objective-c cocoa-touch objective-c-blocks
当引用__block 变量的块被复制时,该变量被移动到堆中。这意味着所有引用它的代码都必须通过间接方式,基本上是一个指针,以便当它从堆栈移动到堆时,这些引用可以随之切换。
这已记录在here。
【讨论】: