gpt4 book ai didi

objective-c - |NSArray objectEnumerator| 内存泄漏?

转载 作者:行者123 更新时间:2023-12-03 16:43:24 25 4
gpt4 key购买 nike

以下线程解释了如何查找当前包含鼠标光标的屏幕:

http://www.cocoabuilder.com/archive/cocoa/104529-current-mouse-screen.html

- (NSScreen *)currentScreenForPointUsingEnumeration:(NSPoint)aPoint
{
NSEnumerator *screenEnumerator = [[NSScreen screens] objectEnumerator];
NSScreen *screen;
while ((screen = [screenEnumerator nextObject]) && !NSMouseInRect(aPoint, screen.frame, NO));

return screen;
}

每次鼠标移动时我都会运行它。

不幸的是,使用 Xcode 的 Instruments 工具中的“分配”功能,上面的代码显示了 NSFastEnumeration 的许多分配。

分析器中没有出现“泄漏”,但分配计数不断增加并且从未减少。应用程序的整体内存使用量也在持续上升。

使用 for(...) 循环的类似函数不存在相同的问题。

我可以做些什么来提高这里的性能吗?或者这是我不应该担心的事情?

编辑:

顺便说一句,尝试[[[NSScreen Screens] objectEnumerator] autorelease]会导致应用程序崩溃并完全锁定我的鼠标。无法单击或以其他方式找出退出应用程序或 Xcode 的方法。需要重新启动 OS X。所以不要这样做。

最佳答案

Is there anything I can do to improve the performance here?

我不确定您为什么认为存在性能问题。分析仪没有显示泄漏,因此除非有问题(不幸的是,现在并非不可能),否则可能没有泄漏。

如果将代码包装在自动释放池中,则 NSFastEnumerations 应该被释放。

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

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