Передача данных делегату - PullRequest
0 голосов
/ 16 июня 2011

У меня есть несколько выходов в объекте контроллера, которые необходимо передать другому контроллеру.Если бы это были только 2 или 3 значения, я бы просто передавал их в качестве параметров в метод делегата (не напрямую для выходов, а путем копирования значения в переменные)

Однако их немало.Каков наилучший способ справиться с этим?Я вижу три подхода:

  • Я мог бы создать новый объект, который содержит все эти свойства и передать его.

  • Я мог бы просто передать контроллерв методе делегата [self.delegate didClickDone:self].Проблема с этим подходом заключается в следующем: разрешен ли мне доступ к выходам другого контроллера извне?

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

Каков наилучший способ приблизиться к этому?

1 Ответ

1 голос
/ 16 июня 2011

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

Если нужно передать много значений, я бы пошел на

  • массив , если содержащиеся в нем переданные объекты имеют одинаковый тип / вид
  • Используйте класс данных , если значения неоднородны по своей природе. Как и в Рефакторинг по М.Фаулеру -> Ввести объект параметров (стр. 295).

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

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