2012-04-22 63 views
3

我可以用一個__block說明符在堆棧中指定一個變量,然後我可以在一個塊中修改它。我只是想知道,幕後發生了什麼? (如果在將來某個時候執行該塊,則堆棧可能會被清除)__block說明符是如何工作的?

回答

4

當引用__block變量的塊被複制時,變量將被移動到堆中。這意味着所有引用它的代碼都必須通過間接方式來完成,基本上是一個指針,這樣,當它從堆棧移動到堆時,這些引用可以隨之切換。

這記錄在here