Трудно понять, что именно вы просите. Вы действительно имеете в виду, что вы создаете и удаляете NSTokenFieldCells? Я не думаю, что вы делаете - элемент управления NSTokenField имеет экземпляр NSTokenFieldCell. Вся сборка просто представляет определенные строки (которыми вы управляете через протокол NSTokenFieldDelegate) в виде графических «токенов». Ячейка не воссоздается каждый раз, только то, что она представляет / рисует.
Вы хотите сказать, что хотите получать уведомление, когда токенизированная строка удаляется из поля? Если это так, я боюсь, что это не так, как он предназначен для работы. Вы решаете, какие строки (разделенные набором символов токенизации, который вы указали для использования поля токена) токенизируются, а какая строка замены (обычно сокращенная или очищенная версия) отображается в качестве самого токена. Следовательно, вы должны определить, отсутствует ли «токен» в вашей модели, и очистить его самостоятельно.
Проще говоря: в «Привязках какао» нет возможностей сделать это. Лучше всего поддерживать флаг «-tokensNeedCleaning» и обрабатывать его так же, как методы -setNeedsDisplay: и -displayIfNeeded работают с NSView. Таким образом, когда поле токена будет отредактировано, вы можете вызвать [self setTokensNeedCleaning: YES]. Этот метод, в свою очередь, может вызывать «[self cleanTokensIfNeeded]» через -performSelector: withObject: afterDelay: (с нулевой задержкой), чтобы запланировать очистку отсутствующих токенов, если флаг needsCleaning равен YES. Затем он сбросит флаг.
Этот простой механизм предотвращает запуск процедуры очистки при каждом последующем редактировании, но, напротив, помечает ее и планирует запуск в ближайшем будущем, если она все еще требуется. Таким образом, последовательные запланированные вызовы -cleanTokensIfNeeded не будут слепо пытаться очистить - вызовы очистки будут объединены.