我已经在我的AppKit(Cocoa)应用程序中实现了状态恢复.这很管用.
然而:如果用户通过双击应用程序保存的文档文件打开应用程序,那么我希望应用程序不恢复以前的窗口,而是only打开在Finder中打开的文档.
问题是,状态恢复似乎发生了before调用了打开文档文件的处理程序,所以即使我有办法 suppress 状态恢复,我也不知道在那个点上挂起的OpenURL调用.
我明白我可以核实emits 的论点,但这似乎是一种相当肮脏的方式.我认为我应该能够以某种方式从app对象中查询存储的文件路径/URL,但我什么也找不到.
或者我可以更改恢复文档与打开文档的顺序吗?到目前为止,我发现这两种情况都发生在[NSDocument restoreDocumentWindowWithIdentifier:state:completionHandler:]
的内部,在completion函数的内部.我找不到一个可重写的函数,在那里我有更多的控制,虽然.
我通过覆盖NSDocument子类中的restoreStateWithCoder:
和encodeRestorableStateWithCoder:
来实现状态恢复.