关闭NSUserNotification时执行一些代码

时间:2018-10-30 13:11:52

标签: objective-c macos memory-management notifications

我正在使用NSUserNotification发送NSUserNotificationCenter,并使用这种NSUserNotificationCenterDelegate方法处理鼠标点击:

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

程序中有一个映射:每个NSUserNotificationNSValue配对,指向一些非托管内存(我使用JNI或Java Native Interface)。如果我的程序仍在运行,则在取消(销毁或取消分配)通知时,我需要free()保留此内存。

我知道即使退出我的应用程序,通知仍会出现在通知中心中,因此在这种情况下,由于它已经被释放,因此不需要释放内存。

问题是:我该如何处理?我的意思是:如果我的程序仍然存在,我该如何说“订阅”我的通知的“解雇”事件并释放我的内存?如果通知由于任何原因离开通知中心:被单击或使用此按钮删除,则被视为“已撤消”:

enter image description here

我尝试过的事情:当然,我尝试重载[NSObject dealloc]方法,但是由于某些原因,从未在NSUserNotification子类上调用它,但是确实如此为某些随机NSObject工作。我也尝试过this,但是由于某些原因,该块未执行:(

0 个答案:

没有答案