Почему Apple сконструировал блок для выделения в стеке, если не скопирован? Какая польза от такого поведения? Почему бы просто не заставить его вести себя как обычный NSObject - alloc-init, и он автоматически переходит в кучу?Почему блок, предназначенный для размещения в стеке, не копируется?
1
A
ответ
2
Причина, по которой блоки устанавливаются в стек, по умолчанию - это скорость. В общий случай, когда время жизни блока меньше, чем у функции стека, которая содержит его, это очень хорошая оптимизация.
http://www.cocoawithlove.com/2009/10/how-blocks-are-implemented-and.html
Смежные вопросы
- 1. Инлайн-блок размещения элементов
- 2. Почему char * не копируется в вектор, а строка копируется?
- 3. CocoaPods, не предназначенный для криттерий
- 4. Нет размещения в стеке всей компиляции программы?
- 5. Почему изображение не копируется в папку?
- 6. Почему объект копируется?
- 7. Почему список копируется в R?
- 8. список, не предназначенный для печати
- 9. Пример кода BCEL для размещения «нового класса [] {String.class}» в стеке
- 10. - HTML, предназначенный для статичности?
- 11. Не удается выяснить, почему строка копируется дважды
- 12. Почему мой звуковой файл не копируется?
- 13. Возвращающийся блок, который живет в локальном стеке
- 14. Почему не копируется копия моего div?
- 15. Почему не копируется libgnustl_shared.so из моего APK?
- 16. Почему перечисление, содержащее ящик, не копируется?
- 17. Почему указатели не расположены в стеке?
- 18. Почему файл Microsoft.SharePoint.Search.dll копируется в моем проекте?
- 19. Должен ли я избегать размещения больших объектов в стеке?
- 20. Cmake: файл не копируется
- 21. вид не копируется
- 22. Почему значение LD_PRELOAD в стеке
- 23. Почему родная DLL не копируется в выходной каталог
- 24. NSString копия не копируется?
- 25. Тема не копируется
- 26. , предназначенный для дочернего объекта event.currentTarget
- 27. значение не копируется
- 28. Почему строка не копируется в адресное пространство дочернего процесса?
- 29. Почему файл PDB не копируется в каталог модуля
- 30. Почему сторонняя библиотека «ChilkatDotNet4x64» не копируется в папку вывода?
Вы имеете в виду блок для синхронной отправки? – Boon
@Boon этот вопрос не имеет смысла. – Sulthan
Я хотел спросить - какой блок будет иметь срок службы короче, чем содержащая его функция, блок, используемый dispatch_sync? – Boon