2013-05-09 2 views
1

Почему Apple сконструировал блок для выделения в стеке, если не скопирован? Какая польза от такого поведения? Почему бы просто не заставить его вести себя как обычный NSObject - alloc-init, и он автоматически переходит в кучу?Почему блок, предназначенный для размещения в стеке, не копируется?

ответ

2

Причина, по которой блоки устанавливаются в стек, по умолчанию - это скорость. В общий случай, когда время жизни блока меньше, чем у функции стека, которая содержит его, это очень хорошая оптимизация.

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

+0

Вы имеете в виду блок для синхронной отправки? – Boon

+1

@Boon этот вопрос не имеет смысла. – Sulthan

+0

Я хотел спросить - какой блок будет иметь срок службы короче, чем содержащая его функция, блок, используемый dispatch_sync? – Boon

Смежные вопросы