macOS:有没有办法在不崩溃的情况下访问 window 控制器?
macOS: Is there a way to access the window controller without crashing?
我必须这样做才能访问 windowController
let windowController = NSApplication.shared.mainWindow?.windowController as! WindowController
当我尝试在 viewDidAppear
中 运行 时,应用程序崩溃
Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
我在网上找到的解决方案是在访问 windowController 之前添加这一行:
NSApp.activate(ignoringOtherApps: true)
此行使应用程序处于活动状态。
但是这个方法并没有真正解决任何问题,因为如果在我的应用程序加载时另一个应用程序成为前端应用程序,我的应用程序就会崩溃。
有什么方法可以实现吗?
您的视图控制器正在加载并不意味着它已显示在屏幕上,甚至位于您的 window 中。很明显,您不能从 viewDidLoad
.
中执行与 window 相关的代码
相反,您可能应该向您的 window 注册一个 NSWindowDelegate
,但最好的做法在很大程度上取决于您尝试使用 window 做什么。
我必须这样做才能访问 windowController
let windowController = NSApplication.shared.mainWindow?.windowController as! WindowController
当我尝试在 viewDidAppear
中 运行 时,应用程序崩溃
Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
我在网上找到的解决方案是在访问 windowController 之前添加这一行:
NSApp.activate(ignoringOtherApps: true)
此行使应用程序处于活动状态。
但是这个方法并没有真正解决任何问题,因为如果在我的应用程序加载时另一个应用程序成为前端应用程序,我的应用程序就会崩溃。
有什么方法可以实现吗?
您的视图控制器正在加载并不意味着它已显示在屏幕上,甚至位于您的 window 中。很明显,您不能从 viewDidLoad
.
相反,您可能应该向您的 window 注册一个 NSWindowDelegate
,但最好的做法在很大程度上取决于您尝试使用 window 做什么。