Я сделал это с помощью 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);
}