次のスレッドは、現在マウス カーソルを含む画面を見つける方法を説明しています。
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 の再起動が必要です。だから、それをしないでください。