【问题标题】:NSWindow crashes after close and reopenNSWindow 在关闭并重新打开后崩溃
【发布时间】:2019-11-01 09:51:39
【问题描述】:

我已经创建了一个 NSWindow

self.storeWindow = [[NSWindow alloc] initWithContentRect:NSMakeRect(100, 100, 800, 660) styleMask:NSWindowStyleMaskResizable|NSWindowListOrderedFrontToBack|NSWindowStyleMaskClosable backing:NSBackingStoreBuffered defer:false];
                             [self.storeWindow setDelegate:self];

打开良好,关闭良好。但是,如果我再次调用 if 甚至检查 nil,它会因 EXC_BAD_ACCESS 崩溃。

我在标题中将其声明为字符串属性

@property (strong,nonatomic) NSWindow *storeWindow;
      if (self.storeWindow.contentView == nil) {
                            self.storeWindow = [[NSWindow alloc] initWithContentRect:NSMakeRect(100, 100, 800, 660) styleMask:NSWindowStyleMaskResizable|NSWindowListOrderedFrontToBack|NSWindowStyleMaskClosable backing:NSBackingStoreBuffered defer:false];
                             [self.storeWindow setDelegate:self];
                        }
                        [self.storeWindow setBackgroundColor:[NSColor whiteColor]];
                        self.store = [[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 850, 640)];
                        [self.store loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:json[@"url"]]]];
                        [self.storeWindow.contentView addSubview:self.store];
                        [self.storeWindow makeKeyAndOrderFront:self.window];

有什么想法吗?

【问题讨论】:

  • 窗口是否属于窗口控制器?窗口的releasedWhenClosed 属性设置了吗?
  • 它不属于受控者。属性releaseWhenClosed 只是一个getter,它当前读取为(lldb) po self.storeWindow.isReleasedWhenClosed <object returned empty description>
  • 该属性也可以设置改变默认行为,即在窗口关闭时释放窗口。
  • 你可以发布一个sn-p来设置它吗?我试过了,它不会让我。根据文档,默认设置为 true。
  • 属性是releasedWhenClosed,所以应该是self.storeWindow setReleasedWhenClosed:NO

标签: objective-c macos nswindow


【解决方案1】:

NSWindow 的releasedWhenClosed 属性可以设置为更改默认行为,即在窗口关闭时释放窗口(除非它由窗口控制器拥有)。该属性可以在 Interface Editor 的 Attributes Inspector 中设置,也可以通过编程方式设置,例如:

[myWindow setReleasedWhenClosed:NO];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-30
    • 2011-07-16
    • 1970-01-01
    • 1970-01-01
    • 2014-07-21
    • 1970-01-01
    • 1970-01-01
    • 2019-07-12
    相关资源
    最近更新 更多