无窗的Cocoa应用程序

时间:2011-07-21 23:44:23

标签: objective-c macos nswindow

我是Objective-C和Cocoa的初学者。

我想创建一个无窗口的应用程序,它只在系统托盘中显示NSStatusItem。托盘工作正常,但有一个问题。

出于某种原因,我的应用程序会自动为我创建一个窗口,我不想这样做。

我认为这是由我在Xcode中创建应用程序时创建的自动Interface Builder模板引起的,所以我从项目中删除了.nib文件。但是窗口仍然会被创建。

包含对窗口的引用的唯一行位于标题中:

NSWindow *window;
@property (assign) IBOutlet NSWindow *window;

并在实施文件中:

@synthesize window;

两者都是自动添加的,我没有写这个。

如何阻止应用创建窗口?我甚至尝试从代码中删除对window的所有引用,包括NSWindow *window,但仍然创建了窗口。

我现在的临时修复是在应用程序中调用[window close];,但肯定有更好的方法吗?

3 个答案:

答案 0 :(得分:8)

我怀疑你的代码中没有任何内容正在创建窗口。当您创建新的Cocoa Xcode应用程序时,Xcode会为您设置一个带有您的界面的XIB。在界面构建器中打开MainMenu.xib(应位于“资源”下)并删除默认情况下引发的窗口。

答案 1 :(得分:4)

如果您不想显示窗口,可以考虑在后台运行您的应用程序。这将阻止窗口出现。

要在后台运行您的应用程序,请在应用程序的PLIST文件中将YES设置为“仅适用于应用程序”

答案 2 :(得分:0)

在NSDocument子类'windowNibName方法中返回false。