Очистка стека отмены

При использовании менеджеров по отмене в считаемой на ссылку среде необходимо быть осторожны относительно проблем, связанных с управлением памятью. NSUndoManager объект не сохраняет цели операций отмены. Клиент — объекту, выполняющему операции отмены — обычно, принадлежит менеджер по отмене, поэтому если бы менеджер по отмене поочередно сохранил ее цель, то это часто создавало бы сохранить цикл. Это означает, тем не менее, что менеджер по отмене может потенциально содержать ссылку на освобожденный объект. Если целевой объект был освобожден, и сообщение отмены отправляется в него, это приводит к исключению на этапе выполнения.

Для принятия мер против этого необходимо заботиться для очистки операций отмены для освобождающихся целей. Вы обычно делаете это одним из трех способов, в зависимости от конфигурации клиента:

В более общем смысле это иногда целесообразно очищать всю отмену и операции восстановления. Некоторые приложения могли бы хотеть сделать это при сохранении документа, например. С этой целью, NSUndoManager определяет removeAllActions метод, очищающий оба штабеля.