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,这样就不会崩溃了