У меня есть два контроллера вида: LocationsViewController
и SettingsViewController
. LocationsViewController
соответствует протоколу SettingsViewControllerDelegate
. Этот протокол содержит только 1 метод:
// SettingsViewControllerDelegate.h
- (void)settingsViewControllerDidFinish:(SettingsViewController *)controller;
Когда мой LocationsViewController
получает сообщения делегата, он отклоняет SettingsViewController
, который был представлен модально.
Я думаю, что это хороший дизайн кода. Проблема заключается в обмене данными между этими контроллерами представления. Оба контроллера представления представляют одни и те же данные: массив из примерно 10 объектов (местоположений). Только SettingsViewController
позволяет изменять этот массив.
Прямо сейчас я «решил» это нелегким способом: оба контроллера представления имеют ссылку на моего делегата приложения, а мой делегат приложения имеет свойство locations
. SettingsViewController
изменяет этот массив напрямую. Например:
// SettingsViewController.m
[appDelegate.locations addObject:newLocation];
Это работает, но я не доволен этим. Я понимаю, что плохо, если ваши контроллеры представления сохраняют ссылку на делегат приложения. Есть предложения?