Я отправляю NSUserNotification
с использованием NSUserNotificationCenter
и обрабатываю щелчки мыши, используя этот метод NSUserNotificationCenterDelegate
:
- (void)userNotificationCenter:(NSUserNotificationCenter *)center didActivateNotification:(NSUserNotification *)notification;
В моей программе есть карта: каждый NSUserNotification
связан с NSValue
, указывая на некоторую неуправляемую память (я использую JNI или Java Native Interface). От меня требуется free()
этой памяти, когда уведомление закрывается (уничтожается или освобождается), если моя программа все еще работает.
Я знаю, что уведомление может появиться в центре уведомлений, даже если мое приложение закрыто, поэтому в этом случае освобождение памяти не требуется, поскольку оно уже освобождено.
Вопрос : Как с этим справиться? Я имею в виду: как я могу, скажем, подписаться на событие «dismiss» моего уведомления и освободить память, если моя программа все еще существует? Уведомление считается «отклоненным», если оно по какой-либо причине покидает центр уведомлений: если оно было нажато или удалено с помощью этой кнопки:
Что я пробовал : Конечно, я пытался перегрузить метод [NSObject dealloc]
, но по некоторым причинам он никогда не вызывается на подклассах NSUserNotification
, однако он работает для некоторого случайного NSObject
s. Я также пытался это , но по некоторым причинам блок не был выполнен: (