- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在构建一个 Cocoa 应用程序并且有一个关于使用窗口 Controller 的问题。这个想法是,如果用户从菜单栏中选择新建,则会创建一个 MyWindowController 的实例,它是 NSWindowController 的一个子类,并显示一个来自 MyWindow.xib 的新窗口。
我正在处理应用程序委托(delegate)中的操作。根据我在搜索之后所看到的,可以完成以下内容。显示窗口后,我没有任何理由再存储指向窗口 Controller 的指针,因为我分配了它,所以我还在显示窗口之前自动释放它。
[[[[MyWindowController alloc] init] autorelease] showWindow:self];
由于窗口很快就会被释放,窗口会在屏幕上短暂显示然后消失。我找到了一个解决方案,我将窗口 Controller 保留在 -showWindow: 方法中,并让它在收到 windowWillClose 通知后自行释放。
- (IBAction)showWindow:(id)sender
{
[self retain];
[[NSNotificationCenter defaultCenter] addObserverForName:NSWindowWillCloseNotification
object:self.window
queue:nil
usingBlock:^(NSNotification *note) {
[self release];
}];
[super showWindow:sender];
}
有更好的方法吗?我搜索了 Apple 文档,但没有找到任何关于使用哪种做法的信息。这听起来像是应该涵盖的非常基础的内容,所以也许我只是在搜索错误的术语。
最佳答案
通常你会捕获窗口 Controller ,只有当你用完它时才释放它。我会说您的应用程序代表将对此负责。如果可以有多个,只需将它们存储在一个数组中。虽然您的解决方案可能有效,但它不是很优雅。
如果您正在开发基于文档的 Cocoa 应用程序,您可以在文档子类方法 makeWindowControllers 中创建窗口 Controller ,并让该类持有指向窗口 Controller 的指针。
关于objective-c - 窗口关闭时释放 NSWindowController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6346220/
我正在 Xcode5 中用 cocoa 为 MacOSX 开发一个应用程序,我想通过按一个按钮从当前窗口打开另一个窗口,这是我的代码: - (IBAction)openWindow:(id)sende
我有一个扩展 NSWindowController 的 BrowserWindowController 类。我的应用程序委托(delegate)有一个 BrowserWindowController,
我的应用程序观察其 NSWindowController 的 document 属性,并在设置时执行一些 UI 设置。一旦设置完毕,就很难因更改而重建 UI(出于内部原因)。 一旦 NSWindowC
我有一个基于菜单栏的应用程序,单击图标时会显示一个窗口。在 Mac OS X Lion 上一切正常,但由于某种原因,在 Snow Leopard 和早期版本的 Mac OS X 上会出现错误。任何时候
我对 Mac 编程非常陌生。三天前刚开始。 我正在制作一个示例应用程序,其中主窗口中有一个按钮 我正在使用此代码打开一个新的 wndowcontroller ThirdViewController *
我有一个包含在 nib 文件中的窗口,该窗口由 NSWindowController 的自定义子类加载,如下所示: - (id)init { self = [super initWithWin
我是 Cocoa 编程新手。 我有一个主 NSWindowController 并且想打开第二个子 NSWindowController。无论如何似乎找不到代码。 有人可以帮忙吗? 最佳答案 不确定这
如何处理单击 NSWindowController 的红色关闭按钮的事件? 询问的原因是我在新的 NSWindowController 窗口中播放视频,当用户单击红色关闭按钮时,音频继续播放,因此我想
我正在努力使这段代码工作: class MyWindowController: NSWindowController { let thing: Thing convenience init(t
我正在创建一个 cocoa 应用程序,并且正在使用 NSWindowController 加载首选项窗口。 当用户选择首选项按钮并打开首选项窗口时 我希望应用程序强制用户在返回到后台应用程序之前完成他
我正在通过自定义方法创建并显示一个 NSWindow,它恰好是我的首选项菜单: - (void)openPreferencesWindow{ if (![self.windowControll
有一个小问题,我正忙于创建 OSX 应用程序。在我的第一个 View (appdelegate)中,我得到了一个登录屏幕,但是在用户登录后我想要(翻转登录 Controller (main.xib)以
我创建了一个 NSWindow xib 文件,我想通过单击另一个窗口中的按钮来打开该文件。 现在,为了控制 NSWindow 的行为,我从 xib 中的库中拖动了一个对象,并将其更改为我在 XCode
我有一个使用 NSWindowController 子类的简单 Cocoa 应用程序。在我设置的 Nib 中: 将所有者的类文件保存到我的 NSWindowController 子类 文件所有者到 N
我有一个 NSWindowController,它显示一个表格并使用另一个 Controller 作为 NSTableView 的数据源和委托(delegate)。第二个 Controller 显示来
我一直在一个小型 Mac 应用程序中使用 Swift。 我一直在尝试添加一个非可选实例变量,但似乎我必须重写两个 init 方法。我最终得到的(编译的)代码如下所示: class CustomWind
我目前正在尝试构建一个菜单栏应用程序。因此,我需要一个 NSWindowController 作为登录字段。必须可以在按下菜单项时打开此 NSWindowController,并在用户单击取消时关闭该
我目前正在 NSWindowController 中搜索类似 viewDidAppear() 的函数。对于我的应用程序,我需要显示 NSWindowController 几次,然后使用 NSApp.h
我正在构建一个 Cocoa 应用程序并且有一个关于使用窗口 Controller 的问题。这个想法是,如果用户从菜单栏中选择新建,则会创建一个 MyWindowController 的实例,它是 NS
在this据说可以通过从 MainMenu.xib 中删除窗口并从 applicationDidFinishLaunching: 中“手动”实例化窗口 Controller 来获得自定义 NSWind
我是一名优秀的程序员,十分优秀!