Различие между новыми документами и восстановленными документами в приложении Какао
В моем проекте мне нужно знать разницу между документами, созданными пользователем, и документами, восстановленными при запуске приложения restoreStateWithCoder, потому что есть некоторые вещи, которые необходимо сделать для новых документов, но не для восстановленных. Как я могу это сделать?
2 ответа
Как насчет подклассовNSDocument
"и использовать этот подкласс для вашего документа?
Тогда вы можете пойматьrestoreStateWithCoder
"как это происходит и установите уникальный флаг (например, свойство BOOL) для тех документов, которые восстанавливаются с диска и не создаются заново с помощью команды" Файл -> Новый ".
Вы также можете попытаться "метод swizzle "restoreStateWithCoder
", но вы должны решить, какое свойство устанавливать в каком объекте.
[Отвечая на это для Swift, но общая идея работает и для Objective-C]
Когда документ новый, вы обычно получаете вызов следующей функции:
convenience init(type tyepName: String) throws
Вы можете установить флаг в этой функции (скажем, needSpecialHandling = true
переменная, которая изначально инициализирована false
) сказать, нужна ли вам специальная обработка для таких случаев.
Тогда в makeWindowControllers()
Функция, которую вы используете эту переменную для запуска вызова специального кода (если true
) так же, как вы вызвали его, возможно, в windowControllerDidLoadNib
функция.