作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 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/
我是一名优秀的程序员,十分优秀!