Метод NSUndoManager prepareWithInvocationTarget не поддерживает аргументы. В документах Apple нет ссылок на это, но я проверил с профилировщиком, и я уверен, что нет. Это означает, что если вы собираетесь удалить объект и быть готовым к отмене - вы должны сохранить его самостоятельно (например, назначить его некоторому мусорному массиву и удалить исходную ссылку). Такого рода подделка удаляет создает много ненужной суеты, особенно когда вам нужно избавиться от старых отскоков.Как заставить NSUndoManager prepareWithInvocationTarget сохранить свои аргументы?
Однако NSInvocation может сохранять аргументы путем вызова метода keepArguments. Поскольку NSUndoManager использует NSInvocation для prepareWithInvocationTarget, это может быть способ передать keepArguments в NSUndoManager.
Вопрос в том, как это сделать?
Я думаю, что цель вопроса состояла в том, чтобы выяснить, как сохранить аргументы NSInvocation, а не цель. Вы правильно относитесь к циклу удержания цели, но я не вижу, как сохранить аргументы для создания цикла. –