gpt4 book ai didi

objective-c - NSEvent addLocalMonitorForEventsMatchingMask 内存泄漏

转载 作者:行者123 更新时间:2023-12-03 16:40:08 28 4
gpt4 key购买 nike

这里又出现了另一个内存泄漏问题。我有一个 NSStatusItem,我正在 try catch 鼠标点击并使用react。以下代码会导致 Instruments 报告泄漏,删除此代码会导致 Instruments 报告无泄漏:

[NSEvent addLocalMonitorForEventsMatchingMask:(NSLeftMouseDown | NSLeftMouseDownMask | NSRightMouseDown | NSRightMouseDownMask)
handler:^NSEvent *(NSEvent *event)
{
if (event.window == self.statusItem.button.window)
{
[self statusItemClicked:self.statusItem.button];
return nil;
}
return event;
}];

关于如何正确实现这一点的建议将不胜感激!谢谢!

Instruments Leak

最佳答案

addLocalMonitorForEventsMatchingMask:handler:方法返回监视器对象。您可以将对象传递给 removeMonitor:当您不再需要它并希望系统停止向它发送事件时。

事件监视器创建一个涉及其自身的保留周期。即使您不保留对监视器的引用,这也会使监视器保持事件状态。此保留周期在 Instruments 中显示为泄漏对象。

如果您想防止泄漏出现在 Instruments 中,请将监视器(由 addLocalMonitor... 返回)存储在某处,例如应用程序委托(delegate)上的实例变量中。

关于objective-c - NSEvent addLocalMonitorForEventsMatchingMask 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53710389/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com