How to quit itself in Objective-C application?

prosseek picture prosseek · Feb 19, 2011 · Viewed 16.2k times · Source

I have a URLHandler that launches some application, the main code is as follows.

@implementation URLHandlerCommand

- (id)performDefaultImplementation {
    NSString *urlString = [self directParameter];

    NSLog(@"url :=: %@", urlString);

    NSTask *task;
    task = [[NSTask alloc] init];
    [task setLaunchPath: @"/usr/bin/open"];

    NSArray *arguments;
    arguments = [NSArray arrayWithObjects: @"-a", @"Path Finder.app", urlString, nil];
    [task setArguments: arguments];

    NSPipe *pipe;
    pipe = [NSPipe pipe];
    [task setStandardOutput: pipe];

    NSFileHandle *file;
    file = [pipe fileHandleForReading];

    [task launch];

    return nil;
}

As the goal of this routine is to launch another application, I'd like to make this URLHandler quit after launching an App. How can I do that?

Answer

Yuji picture Yuji · Feb 19, 2011
  1. You don't have to launch open using NSTask... open just calls into Launch Services, some of whose functionality is directly available from NSWorkspace.

  2. To quit, you just call [[NSApplication sharedApplication] terminate:nil]. See NSApplication documentation.