ios - 为什么 block 被设计为在堆栈上分配,除非被复制?

标签 ios objective-c-blocks

为什么 Apple 将 block 设计为在堆栈上分配,除非被复制?这样的行为有什么好处?为什么不让它表现得像一个普通的 NSObject - alloc-init 它并自动进入堆?

最佳答案

The reason why blocks are placed on the stack by default is speed. In the common case where the lifetime of the block is less than that of the stack function that contains it, this is a very good optimisation.

http://www.cocoawithlove.com/2009/10/how-blocks-are-implemented-and.html

关于ios - 为什么 block 被设计为在堆栈上分配,除非被复制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16471988/

相关文章:

iphone - 如何使用 Mobile Safari 中的链接使用 Twitter 应用程序打开用户的 Twitter 个人资料?

ios - Storyboard的 Xcode 6 ( beta 1 ) 错误

ios - 根据仪器的iOS内存泄漏

ios - IBAction 方法中调用的完成处理程序

objective-c - 带有 block 、ARC 和非 ARC 的 Objective C 内存管理

objective-c - 将 block 内的变量分配给 block 外的变量

ios - UITableViewCell 中的 UIStackView 在 AutoLayout 上无法正确调整

ios - Cordova 写入 WWW 目录 (iOS)

ios - 如何在 for 循环中等待回调方法(或)响应(Xcode、Objective C、iOS)?

ios - dispatch_queue_set_specific 与获取当前队列