Нет, это невозможно по разным причинам.Данные, содержащиеся в блоке, никак не похожи, например, на переменные экземпляра.Нет инвентаризации состояния и, следовательно, нет способа перечислить состояние для архивных целей.
Вместо этого я бы предложил вам создать простой класс для хранения ваших данных, экземпляры которого содержат состояние, используемоеблоки во время обработки и которые могут быть легко заархивированы.
Вы можете найти ответ на этот вопрос интересным .Это связано.
Чтобы расширить, скажем, у вас есть класс, такой как:
@interface MyData:NSObject
{
... ivars representing work to be done in block
}
- (void) doYourMagicMan;
@end
Тогда вы можете:
MyData *myWorkUnit = [MyData new];
... set up myWorkUnit here ...
[something doSomethingWithBlockCallback: ^{ [myWorkUnit doYourMagicMan]; }];
[myWorkUnit release]; // the block will retain it (callback *must* Block_copy() the block)
Оттуда вы можете реализовать архивирование на MyData, сохранить его и т. Д.... Ключ обрабатывает Блок как триггер для выполнения вычислений и инкапсулирует эти вычисления и необходимое состояние вычислений в экземпляр класса MyData.