我正在使用NSUserNotification
发送NSUserNotificationCenter
,并使用这种NSUserNotificationCenterDelegate
方法处理鼠标点击:
- (void)userNotificationCenter:(NSUserNotificationCenter *)center didActivateNotification:(NSUserNotification *)notification;
程序中有一个映射:每个NSUserNotification
与NSValue
配对,指向一些非托管内存(我使用JNI或Java Native Interface)。如果我的程序仍在运行,则在取消(销毁或取消分配)通知时,我需要free()
保留此内存。
我知道即使退出我的应用程序,通知仍会出现在通知中心中,因此在这种情况下,由于它已经被释放,因此不需要释放内存。
问题是:我该如何处理?我的意思是:如果我的程序仍然存在,我该如何说“订阅”我的通知的“解雇”事件并释放我的内存?如果通知由于任何原因离开通知中心:被单击或使用此按钮删除,则被视为“已撤消”:
我尝试过的事情:当然,我尝试重载[NSObject dealloc]
方法,但是由于某些原因,从未在NSUserNotification
子类上调用它,但是确实如此为某些随机NSObject
工作。我也尝试过this,但是由于某些原因,该块未执行:(