Компоненты пути, необходимые для запуска приложения через NSWorkspace?

Короткий вопрос: правильна ли моя модификация статьи? Могут ли эти изменения повредить текущему поведению? В каких ситуациях?

Я заметил немного странный код в моей реализации AppDelegate.

До (Запустите "исполняемый файл Unix"):

NSString *path = [[NSBundle mainBundle] bundlePath];
NSArray *p = [path pathComponents];
NSMutableArray *pathComponents = [NSMutableArray arrayWithArray:p];
[pathComponents removeLastObject];
[pathComponents removeLastObject];
[pathComponents removeLastObject];
[pathComponents addObject:@"MacOS"];
[pathComponents addObject:mainAppName];
NSString *mainAppPath = [NSString pathWithComponents:pathComponents];
[[NSWorkspace sharedWorkspace] launchApplication:mainAppPath];

И спросил себя. Могу ли я сократить некоторые дополнительные переменные? И ответ да (если я не ошибаюсь).

Действительно хорошая статья содержит тот же код.

И моя идея состоит в том, чтобы просто запустить основной пакет, особенно потому что -[NSWorkspace launchApplication:] создан специально для запуска пакетов *.app.

Параметр appName не должен указываться с полным путем, а в случае оболочки приложения может указываться с расширением.app или без него, как описано в разделе Использование расширения.app.

После (Запустите пакет ".app"):

NSString *path = [[NSBundle mainBundle] bundlePath];
NSArray *p = [path pathComponents];
NSMutableArray *pathComponents = [NSMutableArray arrayWithArray:p];
[pathComponents removeLastObject];
[pathComponents removeLastObject];
[pathComponents removeLastObject];
[pathComponents removeLastObject];
NSString *mainAppPath = [NSString pathWithComponents:pathComponents];
[[NSWorkspace sharedWorkspace] launchApplication:mainAppPath];

0 ответов

Другие вопросы по тегам