狮子会在没有退出应用程序的情况下关闭文档时恢复

时间:2011-09-29 08:27:56

标签: macos cocoa osx-lion restore document-based

我第一次踏入Cocoa。

这是一个简单的问题。 OS X Lion支持在终止并重新启动应用程序时恢复窗口状态。好的,好的。

但对于基于文档的应用程序,相同的恢复功能是否也可以管理文档关闭时的窗口状态保存以及稍后重新打开但是没有退出应用程序?(换句话说,无论应用程序是否退出,它是否可以持久管理每个文件的状态?或者我是否必须通过将信息保存在文档的文件中来自行管理?)

例如,iWork '09应用会做这样的事情:如果您关闭已保存的文档并重新打开它,它将恢复窗口大小,位置和滚动条位置。我知道它是否使用Lion的Resume本身。

但是,相比之下,OS X Lion的TextEdit在退出并重新启动时会恢复窗口,但是当您关闭文档并重新打开时,它不记得窗口状态。这让我怀疑在没有退出的情况下使用Resume可能无法自动执行(因为Pages可能会以其专有文件格式保持窗口状态,但TextEdit不会,因为它使用纯文本,RTF,HTML等文件)。


我还无法访问WWDC 2011视频,OS X发行说明,OS X应用程序编程指南和NSWindowRestoration API文档都没有特别谈到这一点。

所以问题再次出现:在关闭并重新打开文档窗口后自动记住文档窗口的状态而不退出应用程序(就像iWork一样)...... Lion's Restore是否支持这个?

非常感谢!

1 个答案:

答案 0 :(得分:2)

  

但是对于基于文档的应用程序,相同的Resume功能是否也可以管理文档关闭时的窗口状态保存,以及稍后重新打开但没有退出应用程序? (换句话说,无论应用程序是否退出,它都可以持续管理每个文件的状态吗?

没有独立,没有。

  

或者我是否必须通过将信息保存在文档的文件中来自行管理?)

或其他地方,是的。

我未经测试的建议是尝试自己使用窗口恢复协议。关闭时,发送给自己encodeRestorableStateWithCoder:,然后将数据存储在文档中(或任何您想要的位置)。打开文档时,如果它具有可恢复的状态信息,请将其传递给restoreStateWithCoder: