Выполнить класс при запуске приложения в Objective-C
У меня есть демонстрационное приложение, написанное на Objective-C, в котором используется класс DDHotKey Дэйва ДеЛонга (блестящий пример кодирования, кстати), и мне было интересно, где мне посмотреть, как запустить класс, как только приложение начнется?
В частности, в классе есть две функции: registerhotkey (registerexample1 в коде примера, предоставленного Дэйвом Делонгом) и unregisterhotkeykey (unregisterexample1 в коде примера, предоставленного Дейвом Делонгом), которые я хотел бы запустить при выполнении программы и при закрытии программы соответственно.
Я не совсем уверен, как это сделать, и ищу либо руководство о том, где я должен искать, или просто некоторые основные указатели.
Спасибо!
1 ответ
Самый простой способ сделать это в applicationDidFinishLaunching:
метод в вашем приложении делегат. Это вызывается при запуске. applicationWillTerminate:
метод будет вызван, когда приложение собирается выйти.
// in application delegate
- (void)applicationDidFinishLaunching:(NSNotification *)notification {
// call registerhotkey
}
- (void)applicationWillTerminate:(NSNotification *)notification {
// call unregisterhotkey
}
Кроме того, вы можете разместить вызовы в вашей основной функции, вызывая registerhotkey
перед вызовом NSApplicationMain и unregisterhotkey
после звонка в NSApplicationMain. Если его еще нет, вам нужно добавить пул автоматического выпуска вокруг этого кода.
int main(int argc, char **argv) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
// call registerhotkey
int result = NSApplicationMain(argc,argv);
// call unregisterhotkey
return result;
}
Наконец, вы можете использовать специальный load
метод для вызова registerhotkey
когда класс или категория загружена. Вам на самом деле не нужно звонить unregisterhotkey
потому что система сделает это автоматически при выходе из приложения.
// in any class or category
+ (void)load {
// call registerhotkey
}