我是Objective-C和Cocoa的初学者。
我想创建一个无窗口的应用程序,它只在系统托盘中显示NSStatusItem
。托盘工作正常,但有一个问题。
出于某种原因,我的应用程序会自动为我创建一个窗口,我不想这样做。
我认为这是由我在Xcode中创建应用程序时创建的自动Interface Builder模板引起的,所以我从项目中删除了.nib文件。但是窗口仍然会被创建。
包含对窗口的引用的唯一行位于标题中:
NSWindow *window;
@property (assign) IBOutlet NSWindow *window;
并在实施文件中:
@synthesize window;
两者都是自动添加的,我没有写这个。
如何阻止应用创建窗口?我甚至尝试从代码中删除对window
的所有引用,包括NSWindow *window
,但仍然创建了窗口。
我现在的临时修复是在应用程序中调用[window close];
,但肯定有更好的方法吗?
答案 0 :(得分:8)
我怀疑你的代码中没有任何内容正在创建窗口。当您创建新的Cocoa Xcode应用程序时,Xcode会为您设置一个带有您的界面的XIB。在界面构建器中打开MainMenu.xib(应位于“资源”下)并删除默认情况下引发的窗口。
答案 1 :(得分:4)
如果您不想显示窗口,可以考虑在后台运行您的应用程序。这将阻止窗口出现。
要在后台运行您的应用程序,请在应用程序的PLIST文件中将YES
设置为“仅适用于应用程序”
答案 2 :(得分:0)
在NSDocument子类'windowNibName方法中返回false。