【发布时间】:2013-11-14 16:56:19
【问题描述】:
我有一个财产:
@property (strong, nonatomic) NSWindow *window;
在我的实现中,我有两种方法,启动和停止。
启动函数像这样创建一个新窗口(部分代码):
_window = [[NSWindow alloc] initWithContentRect:screenRect
styleMask:NSBorderlessWindowMask
backing:NSBackingStoreBuffered
defer:NO];
停止功能像这样关闭窗口:
[_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]; 之后)会导致错误的访问错误。
【问题讨论】:
-
没有回溯,没有人可以帮助你。当然不是没有更多的上下文。
标签: objective-c cocoa automatic-ref-counting nswindow