приложение для iPhone, Singletons, передача сообщений между ViewControllers и дизайн приложения - PullRequest
1 голос
/ 05 января 2010

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

Я создаю приложение, которое использует навигационный контроллер для отображения пары контроллеров представления.

В первом viewController создается CustomObject, и в последовательных свойствах viewControllers для этого customObject выбираются и устанавливаются.

Я создал класс Singleton, который обрабатывает все действия coredata. создание нового объекта. сохранение созданного объекта и т. д. У Singleton есть свойство currentObject. Все ViewControllers имеют доступ к этому синглтону.

Так, например, в представлении 1 пользователь вкладывает кнопку «Новая машина». CoreDataSingleton создает новый объект car, который доступен с помощью currentObject.

Открывается новый вид и отображаются значения по умолчанию для нового автомобиля.

В пользовательской вкладке «Выбор цвета» отображается новый ViewController, в котором можно выбрать цвет. Используя singleton.currentobject, цвет устанавливается, представление выталкивается, другие свойства могут быть установлены и так далее. Наконец пользовательские вкладки "Сохранить" и [Singleton saveCurrentObject] вызывается.

Этот метод работает нормально, но я читал много постов в Интернете, где люди говорят, что одиночные игры плохие, худшее, что вы можете сделать и т.д.

Что вы думаете об этом дизайне приложения? Если синглтоны плохие, как бы вы реализовали такую ​​функциональность?

С уважением, Михель

Ответы [ 4 ]

1 голос
/ 05 января 2010

Вот хорошая статья , которую можно прочитать на Singletons vs AppDelegates. Это объясняет, почему Singletons в большинстве случаев является лучшим способом реализации глобальных переменных доступа, чем при использовании AppDelegates.

1 голос
/ 05 января 2010

Я не кодировал слишком много приложений с основными данными, однако могу сказать вам, что синглтоны подходят для обработки глобальных данных, к которым должны обращаться ваши классы. Это предпочтительный метод, а не метод appdelegate.

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

0 голосов
/ 05 января 2010

Что ж, вы можете выбрать сериализацию данных, сохранить их в файле или базе данных и перезагрузить их при переходе от просмотра к просмотру; или передать текущий объект в качестве параметра при нажатии новых представлений таблицы. Я действительно не могу придумать какие-либо другие способы решения проблемы.

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

Другая приятная вещь - кажется, что легко сохранить объект и в случае завершения приложения.

0 голосов
/ 05 января 2010

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

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