Обмен данными между двумя дочерними представлениями iPhone - PullRequest
1 голос
/ 19 ноября 2009

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

NSUserDefaults , кажется, популярно, но я не хочу постоянных данных или автоматического сохранения в базу данных / файл. Похоже на потенциальное замедление, которого я хочу избежать.

Вторая популярная вещь - передача ссылки на некоторый общий объект верхнего уровня в каждое дочернее представление. Просто не нашел ни одного учебника, который бы показал мне подробно, как это сделать ... Скорее всего, так просто, учебник не нужен - после того, как вы разобрались с ним один раз! Буду признателен, если вы можете указать мне правильное направление (URL)!

Вопрос: Я подумываю об использовании одного «одноэлементного объекта» для хранения «глобальных данных», доступа к ним везде и всегда. Что не так с этим? Если я создаю это, например, appDelegate.m он должен существовать до того, как кто-нибудь попытается получить к нему доступ, верно?

Я смотрю на этот пример кода.

Ответы [ 2 ]

1 голос
/ 19 ноября 2009

Я бы рекомендовал использовать делегатов и / или уведомления.

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

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

0 голосов
/ 19 ноября 2009

Прелесть singleton в том, что он создается автоматически при первом обращении к нему через какой-то [singletonClass sharedInstance]. Таким образом, вам не нужно «создавать» его при запуске. Если это глобальные данные, к которым необходимо получить доступ из любого представления, то единственное представление может быть правильным способом сделать это.

...