2011-12-06 2 views

ответ

7

Несомненно. В классе делегатов приложения вы можете использовать NSWorkspace, чтобы получать уведомление, когда приложение становится активным (NSWorkspaceDidActivateApplicationNotification) или уходит в отставку (NSWorkspaceDidDeactivateApplicationNotification). Дополнительную информацию см. В документации по телефону NSWorkspace.

В вашем классе контроллера, вы могли бы сделать что-то вроде этого:

- (id)init { 
    if ((self = [super init])) { 
     [[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self 
          selector:@selector(appDidActivate:) 
          name:NSWorkspaceDidActivateApplicationNotification 
           object:nil]; 
    } 
    return self; 
} 

- (void)dealloc { 
    [[[NSWorkspace sharedWorkspace] notificationCenter] removeObserver:self]; 
    [super dealloc]; 
} 

- (void)appDidActivate:(NSNotification *)notification { 
    NSDictionary *userInfo = [notification userInfo]; 
    NSLog(@"userInfo == %@", userInfo); 

} 

ключевые моменты, в основном, что вы должны зарегистрироваться, чтобы получать уведомления, как показано на -init. Вы должны повторить код, чтобы добавить другого наблюдателя для каждого дополнительного имени уведомления, которое вы хотите (например, NSWorkspaceDidDeactivateApplicationNotification).

Другая важная вещь, чтобы помнить, чтобы удалить себя в качестве наблюдателя в -dealloc (или в другом месте), так что NSWorkspace не пытается предупредить свой объект контроллера после того, как он был выпущен + dealloc'd (и больше не действительна).

В указанном методе -appDidActivate: сделайте все, что вам нужно, с информацией об этом приложении.

+0

Прохладно, большое вам спасибо! –

+0

Есть ли эквивалент для NSWorkspace в SDK для ios simulator? – Elist

0

Если вы хотите что-то более простое, чем distributed objects, вы можете использовать распределенные уведомления из центра распределенных уведомлений. Однако они не отправляются, если вы не создали приложение. Для мониторинга, когда приложения запускаются или завершаются, вы можете использовать NSWorkspace и его центр уведомлений (предложенный NSGod)

Смежные вопросы