updateTrackingAreas using target-c ... использование super и alloc - PullRequest
0 голосов
/ 23 июня 2019

Мне нужно отслеживать места перемещения мыши.В идеале я хотел использовать «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];
}

У меня такие вопросы:

  1. В коде используется alloc.Должен ли я освободить это?Если да, то где это будет сделано?

  2. В конце кода вызывается «super».Я положил его туда, потому что обычно рекомендуется позвонить родителю.Тем не менее, я отслеживаю только одну область, поэтому я не уверен, нужна ли она мне.Может кто-нибудь, пожалуйста, дайте мне знать, если это действительно нужно или нет?

  3. Поскольку setAcceptsMouseMovedEvents не используется, мне нужно использовать NSTrackingActiveWhenFirstResponder?Мне не кажется, что я делаю, но я могу быть не прав?

Спасибо за вашу помощь

1 Ответ

0 голосов
/ 26 июня 2019
  1. Если ARC ( Автоматический подсчет ссылок ) включен, ARC выпустит trackingArea.

  2. Из документации updateTrackingAreas:

ваша реализация должна вызывать super.

Из документации NSTrackingActiveWhenFirstResponder

Владелец получает сообщения, когда представление является первым респондентом.Это значение указывает, когда активна область отслеживания, определенная объектом NSTrackingArea.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...