objective-c – 比较不同的’启动Cocoa应用程序和参数’方法

objective-c – 比较不同的’启动Cocoa应用程序和参数’方法,第1张

概述我发现至少有三种方法可以从应用程序启动Mac OS X应用程序. > NSTask.我可以提供参数,但它似乎不适用于Cocoa App,而是UNIX风格的二进制文件. >系统功能(system())和C一样.我不知道原因,但似乎没有人推荐这种方法. > NSWorkspace,但我找不到将参数传递给此函数的方法. 问题 > Q1:除了三种方法之外,还有其他方法可以启动应用程序(来自应用程序)吗? 我发现至少有三种方法可以从应用程序启动Mac OS X应用程序.

> NSTask.我可以提供参数,但它似乎不适用于Cocoa App,而是UNIX风格的二进制文件.
>系统功能(system())和C一样.我不知道原因,但似乎没有人推荐这种方法.
> NSWorkspace,但我找不到将参数传递给此函数的方法.

问题

> Q1:除了三种方法之外,还有其他方法可以启动应用程序(来自应用程序)吗?
> Q2:每种方法的优缺点是什么?
>问题3:推出应用程序(来自应用程序)的首选方式是什么?
>问题4:使用参数(从应用程序)启动应用程序的首选方法是什么?
>问题5:打开文档(从应用程序)的首选方法是什么?

添加

> NSWorkspace openfile:withApplication ::对于运行“TextMate README.txt”,基于Roadmaster’s answer和this code,我可以按如下方式进行 *** 作.
但是,我无法将参数提供给App.

    Nsstring * path = @"/Users/smcho/Desktop/README.txt";    NSURL * fileURL = [NSURL fileURLWithPath: path];    NSWorkspace * ws = [NSWorkspace shareDWorkspace];    [ws openfile:[fileURL path] withApplication:@"TextMate"];

> NSWorkspace launchApplicationAtURL:options ::它适用于10.6或更高版本,您可以从 this question获得示例.

    NSURL * bURL = [[NSWorkspace shareDWorkspace] URLForApplicationWithBundleIDentifIEr:@"com.macromates.textmate"];    NSWorkspace * ws = [NSWorkspace shareDWorkspace];    [ws launchApplicationAtURL:bURL options:NSWorkspacelaunchdefault configuration:nil error:nil];

> NSTask:这是工作代码.我需要提供正确的二进制路径,它看起来不像Cocoa方式,因为它用于运行二进制,而不是bundle.但是,可以提供比文件名更多的参数.

    [NSTask launchedTaskWithLaunchPath:@"/Applications/TextMate.app/Contents/MacOS/TextMate"     arguments:[NSArray arrayWithObjects:@"hello.txt",nil]];

> system():使用shell,我可以运行“system(open -a ABC –args hello.txt)”,就像我使用命令行一样.这似乎是最简单的方法.

解决方法 在10.6及更高版本中,NSWorkspace有一个方法launchApplicationAtURL:options:configuration:error:可用于将参数传递给应用程序.

还有启动服务功能,例如LSOpenItemsWithRole.

您也可以向Finder发送AppleEvent,要求它打开一些东西.

编辑添加:“最好”是主观的,但我会说如果你可以使用NSWorkspace,请使用它.如果您不能,例如,您需要传递命令行参数,并且需要支持Leopard,则使用Launch Services.

总结

以上是内存溢出为你收集整理的objective-c – 比较不同的’启动Cocoa应用程序和参数’方法全部内容,希望文章能够帮你解决objective-c – 比较不同的’启动Cocoa应用程序和参数’方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1034271.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存