NSWindow关闭时crash

NSWindow* window;

- (IBAction)onStart:(id)sender {
    window = [[NSWindow alloc]init];
    window.styleMask = NSWindowStyleMaskTitled | NSWindowStyleMaskClosable | NSWindowStyleMaskMiniaturizable | NSWindowStyleMaskResizable;
    window.title = @"test";
    [window setFrame:CGRectMake(300, 300, 400, 400) display:YES];
    [window orderFront:nil];
    
}
- (IBAction)onEnd:(id)sender {
    [window close];
    window = nil;
}

上面代码看起来好像没什么问题,但实际运行起来却在window = nil的地方崩溃了

查看帮助文档,里面提到了releasedWhenClosed这个属性,如果该属性为YES的话,会在close之后自动release,对于NSWindow对象,这个属性默认为YES
所以是在设置为nil之后,又触发了一次release操作,导致的崩溃
需要在创建时将releasedWhenClosed属性设置为NO,这样就不会崩溃了

你可能感兴趣的:(NSWindow关闭时crash)