NSWindow 在关闭并重新打开后崩溃
NSWindow crashes after close and reopen
我创建了一个 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 而崩溃。
我在 header
中将其声明为字符串 属性
@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];
有什么想法吗?
NSWindow 的 releasedWhenClosed 属性 可以设置为更改默认行为,即在关闭时释放 window(除非它被 window 控制器)。 属性 可以在界面编辑器的属性检查器中设置,或者以编程方式设置,例如:
[myWindow setReleasedWhenClosed:NO];
我创建了一个 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 而崩溃。
我在 header
中将其声明为字符串 属性@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];
有什么想法吗?
NSWindow 的 releasedWhenClosed 属性 可以设置为更改默认行为,即在关闭时释放 window(除非它被 window 控制器)。 属性 可以在界面编辑器的属性检查器中设置,或者以编程方式设置,例如:
[myWindow setReleasedWhenClosed:NO];