最簡單的方法是在應用程序委託中的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
}
使用應用程序的委託方法+1是最合適的方法。 'NSApplicationMain()'永遠不會返回,所以之後的任何東西都不會執行。過載'+負載'也被認爲是有風險的。 – 2011-03-29 22:43:04