【发布时间】:2015-04-27 00:41:54
【问题描述】:
问题...
我之前使用 MainMenu.xib 中的这段代码来管理窗口:
--
if([olt_MainMenu_WINDOW isVisible]){
[olt_MainMenu_WINDOW setReleasedWhenClosed:NO];
[olt_MainMenu_WINDOW close];
}
...然后
if(olt_DoSomething_WINDOW == nil)
if(![[NSBundle mainBundle] loadNibNamed:@"DoSomething" owner:self topLevelObjects:nil])
NSBeep();
if(olt_DoSomething_WINDOW != nil)
[olt_DoSomething_WINDOW makeKeyAndOrderFront:nil];
--
...然后回到我的 MainMenu.xib 中的窗口:
--
if([olt_DoSomething_WINDOW isVisible]){
[olt_DoSomething_WINDOW setReleasedWhenClosed:NO];
[olt_DoSomething_WINDOW close];
}
...然后
if(olt_MainMenu_WINDOW == nil)
if(![[NSBundle mainBundle] loadNibNamed:@"MainMenu" owner:self topLevelObjects:nil])
NSBeep();
if(olt_MainMenu_WINDOW != nil)
[olt_MainMenu_WINDOW makeKeyAndOrderFront:nil];
--
但如果我再次尝试在 DoSomething 窗口中设置 KeyAndOrderFront,则会出现 exc_bad_access (code=1 ...
我可以多次将 MainMenu 设为 KeyAndOrderFront,但其他任何一次都不能。我错过了什么?
是的,在窗口的属性检查器中未选择“关闭时释放”。这是我第一次在 ARC 中使用它,可能与此有关吗?
【问题讨论】:
-
我认为这个 SO 问题可能会对您有所帮助:stackoverflow.com/questions/1221516/…
-
分析器没有返回任何警告,但我受到了僵尸的打击:'2015-04-27 14:06:22.730 Six[4660:97785] *** -[DoSomething windowDidBecomeKey:]: message sent到释放的实例 0x6080000a5a60 (lldb)'
-
Henrietta,请截取 Instruments 中窗口的保留/释放历史记录并发布。
-
你在哪里以及如何存储 DoSomething 窗口(控制器)ptr?
标签: objective-c macos cocoa