以下线程解释了如何找到当前包含鼠标光标的屏幕:
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。所以不要那样做。