在Objective-C中的应用程序启动时执行一个类

时间:2011-03-29 20:24:03

标签: objective-c macos xcode4 ddhotkey

我有一个用Objective-C编写的演示应用程序,它使用了Dave DeLong的DDHotKey类(一个精彩的编码,顺便说一下),我想知道应该在应用程序何时开始启动课程的哪个位置?

具体来说,类中有两个函数,registerhotkey(Dave DeLong提供的示例代码中的registerexample1)和unregisterhotkey(Dave DeLong提供的示例代码中的unregisterexample1),我想在程序执行和程序中运行分别关闭。

我不确定如何做到这一点,我正在寻找一个关于我应该在哪里看的指南或者只是一些基本指针。

谢谢!

1 个答案:

答案 0 :(得分:4)

最简单的方法是使用app委托中的applicationDidFinishLaunching:方法。这在启动时调用。当应用程序即将退出时,将调用applicationWillTerminate:方法。

// in application delegate
- (void)applicationDidFinishLaunching:(NSNotification *)notification {
    // call registerhotkey
}
- (void)applicationWillTerminate:(NSNotification *)notification {
    // call unregisterhotkey
}

或者,您可以将调用放在main函数中,在调用NSApplicationMain之前调用registerhotkey,在调用NSApplicationMain之后调用unregisterhotkey。如果还没有,则需要在此代码周围添加自动释放池。

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
}