2013-02-04 72 views
2

我最近遇到了一個使用Facebook的應用程序切換塊的問題。我需要在Facebook登錄後調用一個塊。我們爲什麼要複製塊而不是保留?

當應用程序切換回來時(因爲它在堆棧中),我的塊首先被銷燬,所以我決定保留它。但是這並不奏效,我搞砸了這個問題:/。我在that bloghere上找到了解決方案。

我的問題很簡單:爲什麼複製作品並保留不

回答

4

因爲當你創建一個塊時,沒有什麼可以保留,因爲它不存在於堆中,直到你用Block_copy複製它。 WWDC關於街區的講座對此進行了介紹。

更多信息:http://www.friday.com/bbum/2009/08/29/blocks-tips-tricks/

+0

好的!非常感謝,這有助於我更好地理解事情的運作方式! – Jeremy

+0

「但是,從iOS 6開始,它們被視爲常規對象」它們一直被視爲常規對象。 – newacct

+0

@newacct我的意思是他們是堆分配的對象。在iOS 5中,它們是需要通過'block_copy'複製到堆棧的堆棧對象(這不再需要) – borrrden

4

my recent answer另一個類似的問題:

默認塊在棧上創建。這意味着它們只存在於它們創建的範圍內。
[...]
閱讀由Mike Ash編寫的Stack and Heap Objects in Objective-C以獲取有關堆棧與堆的更多信息。

+0

感謝您的回答,您的鏈接很有用! – Jeremy

相關問題