gpt4 book ai didi

macos - 如何在cocoa应用程序之间传递参数

转载 作者:行者123 更新时间:2023-12-03 16:18:54 25 4
gpt4 key购买 nike

我有一个 Cocoa 应用程序 (.app),我想从另一个 Cocoa 应用程序启动它,这里没问题,但是有什么方法可以启动第二个应用程序并传递一些参数吗?也许在主函数中使用 argv[] 数组?

最佳答案

我使用 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);
}

关于macos - 如何在cocoa应用程序之间传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9858112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com