Выполните некоторый код, когда NSUserNotification отклоняется - PullRequest
0 голосов
/ 30 октября 2018

Я отправляю NSUserNotification с использованием NSUserNotificationCenter и обрабатываю щелчки мыши, используя этот метод NSUserNotificationCenterDelegate:

- (void)userNotificationCenter:(NSUserNotificationCenter *)center didActivateNotification:(NSUserNotification *)notification;

В моей программе есть карта: каждый NSUserNotification связан с NSValue, указывая на некоторую неуправляемую память (я использую JNI или Java Native Interface). От меня требуется free() этой памяти, когда уведомление закрывается (уничтожается или освобождается), если моя программа все еще работает.

Я знаю, что уведомление может появиться в центре уведомлений, даже если мое приложение закрыто, поэтому в этом случае освобождение памяти не требуется, поскольку оно уже освобождено.

Вопрос : Как с этим справиться? Я имею в виду: как я могу, скажем, подписаться на событие «dismiss» моего уведомления и освободить память, если моя программа все еще существует? Уведомление считается «отклоненным», если оно по какой-либо причине покидает центр уведомлений: если оно было нажато или удалено с помощью этой кнопки:

enter image description here

Что я пробовал : Конечно, я пытался перегрузить метод [NSObject dealloc], но по некоторым причинам он никогда не вызывается на подклассах NSUserNotification, однако он работает для некоторого случайного NSObject s. Я также пытался это , но по некоторым причинам блок не был выполнен: (

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...