objective-c - 如何在 applicationDidFinishLaunching 中启动第二个窗口

标签 objective-c macos cocoa

我想在我的应用程序打开时启动调试日志窗口。以下是我计划执行此操作的方式:

-(void)applicationDidFinishLaunching:(NSNotification *)notification
{
    LogWindowController *lwc = [[LogWindowController alloc] initWithWindowNibName:@"LogWindow"];
    [lwc showWindow:self];
    [[lwc logWindow] orderFront:self];
}

日志窗口已创建并运行,例如可在“窗口”菜单中使用。但它在任何地方都看不到。

如果我运行相同的代码来响应菜单项,日志窗口将按预期显示。

为什么会发生这种情况?如何打开应用程序启动时可见的日志窗口?

最佳答案

没有任何东西对该窗口 Controller 具有强引用。在此函数结束时,lwc 将被释放,这将立即关闭窗口(在绘图周期发生之前,因此您不会看到闪烁或任何东西)。

您需要将 lwc 存储在 strong 属性中,以便在您需要时才释放它。

关于objective-c - 如何在 applicationDidFinishLaunching 中启动第二个窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33240417/

相关文章:

macos - Pycharm docker 远程 python 解释器

objective-c - 高效和优化 Cocoa 应用的技巧

xcode - 关于如何组织 Core Data 视觉布局的建议?

ios - UIAlertController 不是窗口层次结构

objective-c - 在 iPhone 应用程序中动态更改 UI

ios - 防止SKNode相互施加压力

cocoa - 从泛型类传递自引用

ios - 图像未从 CGImageCreateWithImageInRect 显示

iphone - 指定 .plist 中文件的路径

macos - 在 Mac OS X 上从源代码编译 SBCL