我最近在 Facebook 的应用切换中遇到了一个问题。我需要在 Facebook 登录后调用一个块。
首先,当应用程序切换回来时,我的块被破坏了(因为它在堆栈上),所以我决定保留它。但这没有用,我把这个问题搞砸了:/。我在那个博客和这里找到了一个解决方案。
我的问题很简单:为什么复制有效而保留无效?
因为当你创建一个块时,没有什么要保留的,因为它不存在于堆中,直到你用Block_copy
. 这在 WWDC 关于块的讲座中有所介绍。
更多信息: http ://www.friday.com/bbum/2009/08/29/blocks-tips-tricks/
请参阅我最近对另一个类似问题的回答:
默认情况下,块是在堆栈上创建的。这意味着它们只存在于它们被创建的范围内。
[...]
阅读Mike Ash在 Objective-C 中的堆栈和堆对象,了解有关堆栈与堆的更多信息。