如果命令行存在,NSApplicationDelegate会阻止窗口

时间:2011-02-24 14:41:03

标签: cocoa macos

我有一个简单的单一窗口应用程序,文件上有一个放置目标。这很好用。但是,我也希望当它以命令行启动时,它只是处理这些文件,而不是显示一个窗口。

NSApplicationDelegate中是否有委托方法可以阻止窗口显示,处理文件并退出应用程序?

3 个答案:

答案 0 :(得分:3)

您可以将窗口设置为不显示从nib文件加载时。 “界面”构建器中的检查器中有一个设置。

然后,您可以根据需要使用this documentation中描述的方法显示窗口。

但是当你的应用正在处理文件时,这仍然会显示Dock中的图标。

答案 1 :(得分:1)

你可以像Yuji说的那样阻止显示主窗口。还有一个名为applicationDidFinishLaunching的通知: 在那里,您可以使用[[NSApplication sharedApplication] terminate:self]处理文件并退出应用程序;

答案 2 :(得分:1)

我见过的最易维护和简单的方法是将命令行版本作为一个简单的Foundation程序放在一个单独的可执行文件中,然后让你的Cocoa程序调用它来处理UI。这样做可以摆脱你需要解决的许多问题。然后,您可以根据需要安装指向您的命令行版本的链接。

如果您不喜欢使用NSTask,请将您的逻辑放入共享框架,并在其上层叠GUI和命令行应用程序。