NSKeyedArchiver
не зависит от NSArray
(неизменяемого или нет).
Мне также не известно об ошибке, связанной с NSKeydArchiver и зависящей от размера архива.
Следующий код отлично работает на Lion:
NSMutableData *data = [NSMutableData data];
for (uint32_t i = 0; i < 1024 * 1024; ++i)
[data appendBytes:&i length:sizeof(uint32_t)];
NSData *archive = [NSKeyedArchiver archivedDataWithRootObject:[NSMutableArray arrayWithObject:data]];
NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:archive];
assert([data isEqual:[array lastObject]]);
Пожалуйста, предоставьте больше кода для более глубокого понимания вашей актуальной проблемы. Возможно, вы пытаетесь разархивировать закодированное изображение вместо архива?