爲什麼必須複製塊而不保留塊?兩者之間有什麼區別? 在什麼情況下,你不需要複製一個塊,如果有的話?爲什麼必須複製塊而不保留塊?你什麼時候不需要複製一個塊?
4
A
回答
6
通常,當你分配一個類的實例時,它會進入堆中,直到它被釋放爲止。但是如果你用代碼聲明瞭一個內聯塊,它會進入堆棧。當堆棧框架消失時,塊實例也會消失 - 除非您將其複製,從而創建一個堆駐留實例。基本上,如果你想在棧幀彈出後繼續使用這個塊,你需要在某個地方創建一個副本。
0
塊在堆棧上創建並在執行到達當前作用域的末尾時銷燬。爲了防止這種情況發生,你必須複製它們,使它們被複制到堆中。通常你會複製一個你想在稍後的時間點調用它的區塊,而不是它創建的範圍。
相關問題
- 1. 我們爲什麼要複製塊而不是保留?
- 2. 你什麼時候需要在Ruby中需要一個模塊?
- 3. 爲什麼我必須保留/複製這個NSString?
- 4. 何時需要複製塊?
- 5. 爲什麼要複製NSString而不是保留它?
- 6. EXC_BAD_ACCESS複製或保留塊
- 7. 你爲什麼要從一個塊創建一個模塊?
- 8. 超越NARC:什麼時候保留,何時分配,什麼時候複製
- 9. 爲什麼try塊需要一個catch
- 10. 爲什麼我需要在我想要使用該塊時「阻止複製」?
- 11. 「保留塊屬性不會複製塊 - 使用複製屬性代替
- 12. 爲什麼類對象的屬性保留而不是複製?
- 13. 未完全複製的塊數不準確,但爲什麼?
- 14. Application.DoEvents,什麼時候需要,什麼時候不需要?
- 15. HDFS不復制塊
- 16. Ansible模板模塊和複製模塊有什麼區別?
- 17. 爲什麼一個變量不需要類型的靜態塊
- 18. 什麼時候在塊中引用自我保留週期?
- 19. iOS:方法返回一個塊然後塊存儲在數組中,我應該什麼時候複製它?
- 20. 爲什麼'視圖'需要被複制?
- 21. 當複製子模塊時不要複製父節點
- 22. 爲什麼ActiveRecord不是一個模塊?
- 23. 爲什麼當你有扇區時需要塊,爲什麼塊的大小是扇區大小的倍數?
- 24. JVM:什麼時候JVM需要複製內存內容
- 25. 我必須在這裏複製一個塊嗎?
- 26. 爲什麼ThreadAbortException不catch塊
- 27. 爲什麼不讀線塊?
- 28. 爲什麼不sem_wait塊
- 29. 爲什麼需要try/catch塊的BufferedWriter
- 30. 什麼時候定義一個模塊,什麼時候只需要使用requireJS文件
謝謝。你什麼時候不需要複製一個塊? – Boon 2013-05-09 22:12:38
大多數情況下,當其他人爲你做時,例如如果你調用一個基於塊的API來在內部進行復制。也可以像聲明一個函數一樣聲明靜態塊,而不是內聯代碼。那些將會堆在一起,不需要被複制。 – 2013-05-09 23:01:43