Как выйти из себя в приложении Objective-C? - PullRequest
10 голосов
/ 19 февраля 2011

У меня есть URLHandler, который запускает какое-то приложение, основной код выглядит следующим образом.

@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;
}

Поскольку целью этой подпрограммы является запуск другого приложения, я бы хотел, чтобы этот URLHandler завершал работу после запуска приложения. Как я могу это сделать?

Ответы [ 2 ]

19 голосов
/ 19 февраля 2011
  1. Вам не нужно запускать open, используя NSTask ... open, просто звоните в Launch Services , некоторые функции которого напрямую доступны из NSWorkspace .

  2. Чтобы выйти, просто позвоните [[NSApplication sharedApplication] terminate:nil]. См. NSApplication документация .

1 голос
/ 19 февраля 2011

Здесь ответили: Правильный способ выхода из приложения iPhone? однако вам также следует взглянуть на ответ Августа. Хотя это и не принятый ответ, за него проголосовали выше, и он также соответствует установленным Apple стандартам, поскольку Apple не советует принудительно выходить из приложений iPhone.

...