2013-10-07 3 views
-2

В прошлом я использовал делегатов для обмена информацией об объекте (с его связанными свойствами) в разных классах, но я планирую новое приложение и думаю об использовании Singleton Class для этого ,Использование Singleton Class

Обязательный протокол использования делегатов для обмена информацией между классами, или я могу просто использовать класс Singleton?

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

ответ

4

Существует множество способов обмена информацией между контроллерами. Это зависит только от вашего дизайна, что вы выбираете. Обычно singletons используются для хранения информации в глобальном масштабе для использования в любом приложении в любом месте. Например, чтобы хранить оценку игры и ее другие вещи. Делегат используется для связи между ограниченным числом контроллеров. BTW вы можете транслировать свои данные на все «прослушивающие» контроллеры через Уведомления. Таким образом, это действительно зависит от вашего дизайна, что вы должны выбрать.

+0

Я задал вопрос для ясности, но спасибо за комментарии. Вероятно, вы продолжите использовать один класс. –

0

У вас есть несколько вариантов. Основные данные, singleton, некоторая разделяемая память (возможно, ваш указатель находится в контроллере навигации, чтобы вы могли делиться им с несколькими экранами или, возможно, в AppDelegate), делегатами и т. Д.

+0

Я переформулировал вопрос для ясности. –

+0

Да, Singleton Class будет помещен в AppDelegate, кажется, работает нормально для меня. –

5

Возможно, вам не хватает базового точка Model-View-Controller, которая является основной моделью приложений Cocoa. В MVC нет причин «делиться информацией через ... Контроллеры просмотров». Существует модельный слой. На уровне модели хранятся все данные. Уровень представления (включая таблицы) читает слой модели и отображает его. Объектам просмотров не нужно много говорить друг с другом. Они в основном обновляют модель, а затем читают ее.

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

+0

Извинения, я сформулировал вопрос плохо, см. Отредактированный вопрос. –

+0

оценил вас комментарии –