как передать параметры между приложениями какао - PullRequest
3 голосов
/ 25 марта 2012

У меня есть приложение Какао (.app), и я хотел бы запустить его из другого приложения Какао, здесь нет проблем, но есть ли способ запустить второе приложение, передав ему некоторые параметры?может быть, используя массив argv [] в основной функции?

Ответы [ 2 ]

3 голосов
/ 26 марта 2012

Я сделал это с помощью NSWorkspace для запуска приложения и NSDistributedNotificationCenter для передачи данных.Это, очевидно, не полностью разработано, но это сработало.Одно предупреждение из документации - словарь, который я отправил с аргументом (в данном примере это просто строка), нельзя использовать в изолированном приложении (словарь должен быть равен нулю).которое открывает другое приложение:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 
{
ws = [NSWorkspace sharedWorkspace];
NSNotificationCenter *center = [ws notificationCenter];
[center addObserver:self selector:@selector(poster:) name:NSWorkspaceDidLaunchApplicationNotification object:nil];
[ws launchApplication:@"OtherApp.app"];
}

-(void)poster:(NSNotification *) aNote 
 {
NSDistributedNotificationCenter *center = [NSDistributedNotificationCenter defaultCenter];
NSDictionary *dict = [NSDictionary dictionaryWithObject:@"theDataToSend" forKey:@"startup"];
[center postNotificationName:@"launchWithData" object:nil userInfo:dict];
NSLog(@"Posted notification");
 }

И это в открывшемся приложении:

-(void)awakeFromNib 
{
NSDistributedNotificationCenter *center = [NSDistributedNotificationCenter defaultCenter];
[center addObserver:self selector:@selector(doStartup:) name:@"launchWithData" object:nil];
}

 -(void)doStartup:(NSNotification *) aNote 
    {
    NSLog(@"%@",aNote.userInfo);
    }
1 голос
/ 25 марта 2012

Как вы запускаете второе приложение Какао?

Когда я это делаю, я обычно общаюсь с другим приложением, используя AppleScript через NSAppleScript.Вы можете запускать приложения таким же образом.Конечно, другое приложение должно поддерживать AppleScript.

Вы также можете использовать Распределенные объекты, если у вас есть контроль над обоими приложениями, но это более сложно.

Если вам когда-либо приходилось работать спрограмма командной строки, тогда NSTask полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...