所以我需要在OSX上注册一个函数(使用Xcode / objective C),它将在程序终止时注册要调用的特定函数。
我遇到了this,但我猜这是针对iOS而不是针对OSX。
我用NS替换了UI并给了它一个镜头,但它没有用。
NSApplication *app = [NSApplication sharedApplication];
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(applicationWillTerminate:)
name:BeCalledOnExit object:app];
但这不是编译。它在名称上写了一些内容:当它显然在.h&上时,它是一个未声明的标识符。函数前的.m文件。
我遇到了另一个用过这个的小伙伴:-(BOOL) applicationShouldTerminateAfterLastWindowClosed:(NSApplication *) sender{
return TRUE
}
但它对我不起作用,因为我的应用程序是一个完整的状态栏应用程序。
基本上我在我的应用程序中创建一些临时文件,就在退出之前,我想确保我的应用程序正在清除这些文件。我把它放在/ tmp / ..不想要太多空间。
我真的想要一个像gcc / python,
这样的解决方案atexit(functionName);
答案 0 :(得分:6)
在您的AppDelegate上实施- (void)applicationWillTerminate:(NSNotification *)notification
,它将在应用程序终止之前被调用
因此,AppDelegate的实现可能类似于:
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
// Insert code here to initialize your application
NSLog(@"I FINISHED LAUNCHING!");
}
- (void)applicationWillTerminate:(NSNotification *)notification
{
NSLog(@"I WILL TERMINATE NOW!!!");
}
@end
答案 1 :(得分:0)
您的应用代表应实施 - (void)applicationWillTerminate:(NSNotification *)通知以获取通知
(OR)
如果清理失败,您可以实施applicationShouldTerminate并执行文件清理并返回相应的NSApplicationTerminateReply
答案 2 :(得分:0)
如果您想使用通知,则应该观察NSApplicationWillTerminateNotification
。
答案 3 :(得分:0)
NSApplication *app = [NSApplication sharedApplication];
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(applicationWillTerminate:)
name: NSApplicationWillTerminateNotification object:app];
/*A notification named NSApplicationWillTerminateNotification.*/
- (void)applicationWillTerminate:(NSNotification *)notification
{
}