我最近遇到了使用Facebook的应用切换使用块的问题。 Facebook登录后我需要拨打电话。
首先我的块在应用程序切换回来时被破坏(因为它在堆栈中),所以我决定保留它。但那不起作用,我搞砸了这个问题:/。我在that blog和here找到了解决方案。
我的问题很简单:为什么复制有效并且保留不?
答案 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。