Когда следует переопределить updateTrackingAreas

Так что у меня довольно большой NSScrollView с несколькими пользовательскими представлениями. В этих пользовательских представлениях я переопределяю -(void)updateTrackingAreas как это:

- (void)updateTrackingAreas
{    
    [self removeTrackingArea:trackingArea];

    trackingArea = [[NSTrackingArea alloc] initWithRect:[self bounds]
                                                options:(NSTrackingCursorUpdate |
                                                         NSTrackingActiveWhenFirstResponder |
                                                         NSTrackingInVisibleRect)
                                                  owner:self 
                                               userInfo:nil];

    [self addTrackingArea:trackingArea];
}

Но почему-то я чувствую, что это немного неэффективно, поскольку у меня есть около 50 экземпляров моего пользовательского представления в NSScrollView, и только около 5 из них видны одновременно, и таким образом я обновляю области отслеживания невидимых представлений.

Поэтому я подумал, что не буду обновлять области отслеживания, если представление не находится в видимом прямоугольнике NSScrollView. Что-то вроде:

- (void)updateTrackingAreas
{
    if(!NSIntersectsRect([self frame], [[self superview] visibleRect]))
    {
        return;
    }

    // ...
} 

Кажется, это работает хорошо, но я не уверен, что это безопасно.

У кого-нибудь есть советы по этому вопросу?

0 ответов

Другие вопросы по тегам