在Cocoa应用程序中,当您有未保存的数据时,您经常会在窗口的关闭按钮中看到一个小红点; TextEdit就是一个很好的例子。我仔细研究了Cocoa文档,但我找不到以编程方式设置此状态的方法。我确信有一些非常简单的方法,但很明显我错过了一些东西。
答案 0 :(得分:16)
要以编程方式设置,可以使用NSWindow的-setDocumentEdited:
方法。如果您正在编写基于文档的应用程序,NSDocumentManager应自动检测何时对与当前NSDocument关联的NSUndoManager进行未保存的更改。
答案 1 :(得分:14)
取决于您正在构建的应用程序类型。如果基于NSDocument
,请使用NSDocument
的{{1}}方法。如果您刚刚获得updateChangeCount:
,请使用NSWindowController
。如果你所拥有的只是setDocumentEdited:
,则NSWindow
会有setDocumentEdited:
方法。
答案 2 :(得分:9)
此外,在10.6中,'setDocumentEdited'将应用程序标记为脏,因此无法快速终止。如果您不调用此方法,请在Info.plist中设置标记(请参阅What's New in 10.6)
<key>NSSupportsSuddenTermination</key>
<string>YES</string>
这样,如果你的应用程序正在运行(但不是很脏),那么Mac OS X可以简单地杀死它,而不是调用礼貌的关闭请求。如果您的文档被标记为脏(或窗口是),那么它将通过正常的应用程序关闭过程来关闭它。