Ответ 1
Да, вам нужно скопировать. Не потому, что они автореализованы, а потому, что они запускаются в стеке. Обратите внимание, что блоки также ведут себя как обычные объекты Objective-C, поэтому их можно скопировать с помощью обычного сообщения copy
:
void storeBlockForLater: (dispatch_block_t) block
{
[someArray addObject:[[block copy] autorelease]];
}
Или, если у вас есть свойство block:
@property(copy) dispatch_block_t block;
Сохранение здесь не помогает.