В качестве альтернативы, если вы не используете KVC для доступа к этому свойству, вам необходимо убедиться, что вы используете средства доступа к массиву для доступа к нему.
Если при сохранении, восстановлении или применении изменений, вы говорите с массивом напрямую ([employees setArray:]
или [employees insertObject:… atIndex…]
/ [employees removeObjectAtIndex:…]
), тогда побочные эффекты ваших методов доступа не происходят, потому что вы их не использовали.Вы реализовали поддержку отмены в ваших средствах доступа (по крайней мере, в двух, чьи реализации вы показали), и, если что-то наблюдает за свойством через KVO, это еще один побочный эффект;обе эти вещи не происходят, если вы не используете свои методы доступа.
Если ваш метод доступа setEmployees:
не общается с Undo Manager (вы пропустили этот код в своем вопросе, поэтому я не могу сказать,), то это не добавит отмены действий.Диспетчер отмены будет работать нормально, если вы с ним разговариваете, но если нет, то он не может.
Вы должны отправить себе insertObject:inEmployeesAtIndex:
и removeObjectFromEmployeesAtIndex:
сообщения, чтобы изменения былизаписано в менеджере отмены, если это единственные места, где вы говорите с менеджером отмены.Если вы хотите, чтобы оптовая замена (setEmployees:
) была отменена, вы также должны добавить к ней отмену действия для менеджера.