我需要跟踪鼠标的移动位置。理想情况下,我想使用“ setAcceptsMouseMovedEvents”,它将由窗口或子类NSView捕获。但是我不确定放在哪里。因此,我将通过updateTrackingAreas跟踪鼠标的移动。
- (void) updateTrackingAreas {
[self removeTrackingArea:trackingArea];
trackingArea = [[NSTrackingArea alloc] initWithRect:[self bounds]
options:(NSTrackingActiveAlways | NSTrackingInVisibleRect | NSTrackingMouseEnteredAndExited | NSTrackingMouseMoved)
owner:self userInfo:nil];
[self addTrackingArea:trackingArea];
[super updateTrackingAreas];
}
我的问题是这些:
在代码中,使用alloc。我需要释放这个吗?如果是这样,该在哪里做?
在代码结尾,将调用“ super”。我把它放在那儿是因为通常建议打电话给父母。但是,我仅跟踪一个区域,因此不确定是否需要该区域。可以让我知道是否真的需要吗?
由于未使用setAcceptsMouseMovedEvents,是否需要使用NSTrackingActiveWhenFirstResponder?我似乎没有,但是我可能错了?
感谢您的帮助
答案 0 :(得分:0)
如果ARC(Automatic Reference Counting)已打开,则ARC将释放trackingArea
。
摘自updateTrackingAreas
的文档:
您的实现应调用super。
NSTrackingActiveWhenFirstResponder
的文档当视图是第一响应者时,所有者将收到消息。此值指定何时激活由NSTrackingArea对象定义的跟踪区域。