Совместное использование подкласса NSDocument между несколькими NSWindowControllers - PullRequest
2 голосов
/ 29 мая 2011

У меня есть приложение, которое в настоящее время не основано на документах (потому что я думал, что это будет больше проблем, чем стоит).Тем не менее, я подумал, что это может стоить того, но есть одна проблема, которую я еще не решил.Совместное использование подклассов NSDocument между несколькими окнами.

Итак, нужно ли привязывать подклассы NSDocument к одному NSWindowController, или я могу разделить их между несколькими окнами?Причина, по которой я спрашиваю, состоит в том, что файлы моих приложений, вероятно, имеют размер более 100 МБ (или больше), и также вероятно, что пользователь откроет один и тот же файл в более чем одном окне.Кроме того, эти файлы обрабатываются относительно долго, поэтому было бы неплохо разрешить нескольким окнам доступ к одному и тому же NSDocument.Кроме того, файлы обновляются очень быстро с большим количеством данных, поэтому синхронизация нескольких экземпляров одного и того же документа потребует много процессорного времени.

Кто-нибудь сделал это, или это можно сделать с помощью Document-на основе приложения?Любые советы на эту тему приветствуются.

Ответы [ 4 ]

2 голосов
/ 29 мая 2011

Вы должны быть в состоянии использовать метод - (void)addWindowController:(NSWindowController *)aController, найденный в NSDocument Class Reference , чтобы сделать именно это. Будет много логики, чтобы он знал, куда отправлять какие данные, но это по крайней мере даст вам контроль над несколькими оконными контроллерами, связанными с одним и тем же документом

1 голос
/ 30 мая 2011

Пока что это лучший ответ, который я нашел, который не дает прямого ответа на вопрос, но имеет дело со многими из тех же препятствий, с которыми я сталкиваюсь. Надеюсь, у кого-то есть лучший, более подробный и прямой ответ для меня.

http://www.cocoadev.com/index.pl?DocumentBasedAppWithOneWindowForAllDocuments

0 голосов
/ 31 октября 2012

По умолчанию каждый документ имеет один выделенный контроллер Windows.Но вы можете переопределить

- (void)makeWindowControllers

, чтобы создать свой собственный контроллер Windows и добавить их в документ, как упомянул Слев.

0 голосов
/ 30 мая 2011

Архитектура документа поможет вам управлять несколькими моделями - т.е.если вы хотите, чтобы пользователь открывал несколько моделей одновременно и мог переключаться между ними, это могло бы принести вам пользу.

Это не мешает вам что-либо делать, в противном случае это не облегчаетвсе сложно.Работа с Windows и GUI по-прежнему остается за вами, и если вы не знаете, как это структурировать, не имеет значения, используете вы документ или нет.

Если содержимое окна со временем может изменитьсяпредставлять разные документы - что происходит, когда много документов открыто?Это может быть трудной проблемой для решения, и я не имею в виду с технической точки зрения (изменить содержимое окна так же просто, как window.contentView = newView, верно?).

Звучит таку вас много неправильных представлений о том, что такое архитектура документа и что она может сделать для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...