在我的项目中,我需要能够区分用户创建的文档和restoreStateWithCoder在应用程序启动时恢复的文档之间的区别,因为有些事情需要为新文档完成,而不是已恢复的文档。我怎么能这样做?
答案 0 :(得分:0)
如何对“NSDocument
”进行子类化并将该子类用于文档?
然后,您可以捕获“restoreStateWithCoder
”,并为那些从磁盘还原而不是通过“File - > New”命令创建的文档设置唯一标志(例如BOOL属性)
您也可以尝试"method swizzle"“restoreStateWithCoder
”,但您必须决定在哪个对象中设置哪个属性。
答案 1 :(得分:0)
[对Swift回答这个问题,但总体思路也适用于Objective-C]
当文档是全新的时,您通常会调用以下函数:
convenience init(type tyepName: String) throws
您可以在该函数中设置一个标志(比如needSpecialHandling = true
,这是一个最初初始化为false
的变量),说明您是否需要对此类情况进行特殊处理。
然后在makeWindowControllers()
函数中使用该变量来触发调用特殊代码(如果true
),就像在windowControllerDidLoadNib
函数中调用它一样。