Singleton CoreData Manager доступен для всех встроенных представлений UINavigationControllers - PullRequest
0 голосов
/ 10 февраля 2012

Мне интересно, является ли способ, которым мой менеджер CoreData взаимодействует с моими представлениями, является правильным / наилучшим / наиболее эффективным способом из возможных.

Я использую стандартный шаблон синглтона, например Apple, для размещения моего стека CoreData. Он также содержит утилиты для использования с веб-сервисом и другими вспомогательными методами.

Есть контроллер UINavigation с двумя viewController, tableViewController и еще один viewController, программно созданный viewController.

Первые два viewController - это настройки (адрес веб-службы и т. Д.) И логин соответственно. Сразу же я попал в окно входа в систему (второй вид). При успешном входе в систему отправляется tableView. При выборе ячейки представление создается программно и перемещается.

Каждое из этих представлений нуждается в хранилище данных, поэтому в их viewDidLoad я собираю синглтон.

Это способ делать вещи? Какие есть другие идеи? Может ли контроллер навигации предоставлять свойства всем встроенным представлениям?

Спасибо.

1 Ответ

0 голосов
/ 12 апреля 2012

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

Однако недавно я перевел свой проект на использование ARC, поэтому настройка синглтона несколько упростилась.Теперь у меня есть:

static MMPersistentStoreController *sharedMMPersistentStoreController = nil;

+ (MMPersistentStoreController *)sharedMMPersistentStoreController {
    if (sharedMMPersistentStoreController == nil)
    {
        sharedMMPersistentStoreController = [[self alloc] init];
    }

    return sharedMMPersistentStoreController; 
 }

Я думаю, что это довольно стандартный подход.Конечно, это лучше, чем передавать объект повсюду.

Что касается альтернатив, я думаю, вы могли бы synthesize это как property вашего делегата приложения и затем получить к нему доступ через UIApplication.

При первом подходе это статический экземпляр, созданный объектом класса MMPersistentStoreController.С последним, экземпляр является ivar объекта, который будет существовать только один раз в вашем приложении.

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