Похоже, вы уже знаете ответ - не архивируйте все при каждом удалении. Это может быть сделано несколькими способами - архивирование только фрагментов за раз, отложенное архивирование (периодически / при выходе / из других политик) или значительно ускорение пользовательского кода архивации, что, я сомневаюсь, даже очень помогло бы в схеме вещи. Я слышал , что MAKeyedArchiver был быстрее, чем NSKeyedArchiver, но я полагаю, что это было некоторое время назад и разработано для mac +, потенциально зависящего от платформы (с другой стороны, это было задумано как капля замены NSKeyedArchiver API того времени, поэтому, если вы решите его использовать, должно быть мало времени интеграции).