首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSEvent addLocalMonitorForEventsMatchingMask内存泄漏

NSEvent addLocalMonitorForEventsMatchingMask内存泄漏
EN

Stack Overflow用户
提问于 2018-12-10 17:07:19
回答 1查看 1K关注 0票数 3

这里再次出现了另一个内存泄漏问题。我有一个NSStatusItem,我试图捕捉鼠标点击和反应。下列代码导致仪器报告泄漏,而删除此代码则使仪器不报告泄漏:

代码语言:javascript
复制
[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;
         }];

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-10 17:51:14

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

事件监视器创建一个涉及自身的保留周期。这样,即使不保留对监视器的引用,监视器也会保持活力。这个保留周期显示为仪器中的泄漏对象。

如果要防止泄漏出现在仪器中,请将监视器(由addLocalMonitor...返回)存储在某个地方,比如应用程序委托的实例变量中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53710389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档