Поддерживает ли Snow Leopard/Lion kEventSystemTimeDateChanged

Мне нужно получать уведомления об изменениях, внесенных в панель настроек системы. Из документа Google я нашел kEventSystemTimeDateChanged, и он работал в Leopard. Но при запуске того же фрагмента кода на снежном барсе событие не запускается при изменении часов. Мне нужно разъяснение поддерживает ли Snow Leopard и Lion kEventSystemTimeDateChanged.

Мой фрагмент кода приведен ниже.

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
        [self SystemTimeChangeHandler]; 
}



OSStatus DateChangeEventHandler(EventHandlerCallRef nextHandler, EventRef theEvent, void *userData) 
{
NSLog(@"Event Fired!\n");    
return 0;
}


- (void)SystemTimeChangeHandler
{

NSLog(@"SystemTimeChangeHandler");
EventTypeSpec eventType;

eventType.eventClass = kEventClassSystem;

eventType.eventKind = kEventSystemTimeDateChanged;


EventHandlerUPP eventHandlerUPP =
NewEventHandlerUPP(DateChangeEventHandler);

EventHandlerRef eventHandlerRef = NULL;

(void)InstallApplicationEventHandler(
                                     eventHandlerUPP,
                                     1,
                                     &eventType,
                                     self,
                                     &eventHandlerRef);
}

person Akbar    schedule 07.09.2011    source источник
comment
Измените свой вопрос, включив в него код, который вы используете для регистрации на мероприятие.   -  person Peter Hosey    schedule 07.09.2011
comment
Затем вы должны удалить это приведение (void) и выяснить, какой код состояния возвращает InstallApplicationEventHandler. Пожалуйста, отредактируйте свой вопрос, чтобы включить это.   -  person Peter Hosey    schedule 07.09.2011
comment
Привет, Питер, я пробовал так, статус возвращается как 0. Это правильный способ найти код состояния. Статус OSStatus = InstallApplicationEventHandler(eventHandlerUPP, 1, &eventType, self, NULL);   -  person Akbar    schedule 07.09.2011
comment
Ага. 0 равно noErr, поэтому, если это не работает, вы должны сообщить об ошибке: bugreport.apple.com   -  person Peter Hosey    schedule 07.09.2011


Ответы (1)


В качестве обходного пути в Mac OS X 10.6 или более поздних версиях вы можете зарегистрироваться для NSSystemClockDidChangeNotification. В документации не ясно, находится ли это в локальном центре уведомлений по умолчанию или в распределенном центре уведомлений по умолчанию.

person Peter Hosey    schedule 07.09.2011