当我关闭应用的最后一个窗口时,我总是会遇到这个错误:
特定于应用程序的信息:objc_msgSend()选择器名称: respondsToSelector:objc [42729]:垃圾收集已关闭
Thread 0 Crashed :: Dispatch queue:com.apple.main-thread 0
libobjc.A.dylib 0x00007fff8cc9a150 objc_msgSend_vtable5 + 16 1 com.apple.AppKit 0x00007fff8fbca814 - [NSApplication supplementalTargetForAction:sender:] + 63 2 com.apple.AppKit 0x00007fff8fab91e4 _objectFromResponderChainWhichRespondsToAction + 155 3 com.apple.AppKit 0x00007fff8fab8feb _NSTargetForSendAction + 3255 4 com.apple.AppKit 0x00007fff8fab832f - [NSApplication targetForAction:to:from:] + 682 5 com.apple.AppKit 0x00007fff8fab7e00 - [NSMenu _enableItem:] + 403
我承认文档笔尖有两个窗口。我希望在关闭主窗口时关闭和释放“辅助窗口”。我应该怎么做?也许这些错误来自这里......我正在使用Core Data和ARC。
此致
答案 0 :(得分:0)
我找到了似乎可以解决问题的东西。但是我不明白发生了什么,我真的不喜欢这个。
在IB中,文件的所有者有一个指向文档窗口的“窗口”插座;但是没有@property NSWindow窗口;在NS(持久)文档的默认代码中。
我必须将面板设置为doc主窗口的“子窗口”,因此我添加了@property NSWindow mainWindow。新的“mainWindow”插座指向与“窗口”插座相同的窗口。
突然没有更多的崩溃,没有更多的僵尸。发生了什么?我很困惑。
反思之后:我添加了一个指向文档窗口的指针,因此ARC计数器永远不会达到零。我想我在NSDocument的_window上有一个缺失的引用,现在由我的插座平衡。