【发布时间】:2020-08-10 17:54:41
【问题描述】:
我正在尝试使用加载 xib 选项页面的 configurationSheet 创建一个快速的 macOS 屏幕保护程序。 不幸的是,选项页面仅在单击“屏幕保护程序选项...”按钮两次后才会显示。第一次单击按钮时,控制台应用程序显示:
-[LegacyExtensionManager exceptionHandler:shouldHandleException:mask:] -- Module: ScreenSaverS threw an uncaught exception: NSInternalInconsistencyException, reason: cannot begin sheet a second time.
-[LegacyExtensionManager processExtensionRequest:replyInfo:]_block_invoke -- Module: ScreenSaverS (ScreenSaverS) failed to display a configuration sheet. Exception: NSInternalInconsistencyException, reason: cannot begin sheet a second time
在此之后,内部选项页面似乎已被删除,并且第二次单击选项按钮时,我的 xib 加载器以及完整的选项页面操作都正常工作。 这是我的配置表重载:
override var configureSheet: NSWindow?
{
NSLog("ScreenSaverS:configureSheet self=%p", self);
if (configSheet == nil)
{
let tmpBundle = Bundle(for: type(of: self));
if (tmpBundle.loadNibNamed("ConfigView", owner: self, topLevelObjects: nil) == false)
{
NSLog("ScreenSaverS:configureSheet load config sheet failed");
} else {
NSLog("ScreenSaverS:configureSheet config sheet loaded configSheet=%p", configSheet);
}
} else {
NSLog("ScreenSaverS:configureSheet self=%p already created", self);
}
return configSheet
}
有谁知道为什么第一次单击选项按钮会导致此异常以及如何解决此问题以使其第一次正常工作?
【问题讨论】:
标签: swift xcode exception screensaver