1
为什么Apple设计的块要分配到堆栈上,除非被复制?这种行为有什么好处?为什么不让它像一个普通的NSObject一样运行 - alloc-init它会自动运行在堆上?为什么块被设计为在堆栈上分配,除非被复制?
为什么Apple设计的块要分配到堆栈上,除非被复制?这种行为有什么好处?为什么不让它像一个普通的NSObject一样运行 - alloc-init它会自动运行在堆上?为什么块被设计为在堆栈上分配,除非被复制?
块默认放置在堆栈上的原因是速度。在 这个块的使用寿命小于 包含它的堆栈函数的情况下,这是一个很好的优化。
http://www.cocoawithlove.com/2009/10/how-blocks-are-implemented-and.html
你的意思是同步调度块? – Boon 2013-05-09 22:48:59
@那个问题没有道理。 – Sulthan 2013-05-09 23:06:28
我的意思是问 - 哪个块的寿命比包含它的函数的寿命短,dispatch_sync使用哪个块? – Boon 2013-05-10 15:15:46