我有一个财产:
@property (strong, nonatomic) NSWindow *window;
在我的实现中,我有两种方法,启动和停止。
start 函数像这样创建一个新窗口(部分代码):
_window = [[NSWindow alloc] initWithContentRect:screenRect
styleMask:NSBorderlessWindowMask
backing:NSBackingStoreBuffered
defer:NO];
stop 函数像这样关闭窗口:
[_window orderOut:self];
[_window close];
//_window = nil;
但是,当我第二次执行启动函数(启动,然后停止,然后重新启动)时,我得到一个 EXC_BAD_ACCESS 错误。
这发生在 NSWindow alloc 语句上。
我需要做什么来确保正确创建新窗口?
编辑:经过更多测试,错误似乎与 alloc init 调用无关。如果我在此之前添加以下行:
NSLog(@"%@", _window);
在第一次调用 start 时,这将导致输出“null”,然后在调用 stop() 和新调用 start 之后,我将在 NSLog 行上收到 EXC_BAD_ACCESS 错误。
即使只是设置 _window = nil; 在 stop 方法中(在调用 [_window close]; 之后)会导致错误的访问错误。