我们为什么要复制块而不是保留?

时间:2013-02-04 09:25:47

标签: ios objective-c-blocks fast-app-switching

我最近遇到了使用Facebook的应用切换使用块的问题。 Facebook登录后我需要拨打电话。

首先我的块在应用程序切换回来时被破坏(因为它在堆栈中),所以我决定保留它。但那不起作用,我搞砸了这个问题:/。我在that bloghere找到了解决方案。

我的问题很简单:为什么复制有效并且保留不

2 个答案:

答案 0 :(得分:9)

因为当你创建一个块时,没有什么可以保留,因为它在堆中不存在,直到你用Block_copy复制它。 WWDC关于块的讲座涵盖了这一点。

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

答案 1 :(得分:6)

请参阅my recent answer其他类似问题:

  

默认情况下,会在堆栈上创建块。这意味着它们只存在于它们创建的范围内   [...]
  有关堆栈与堆的更多信息,请阅读Mike Ash的Stack and Heap Objects in Objective-C