iOS: лучше ли получить ссылку на синглтон по требованию или оставить его? - PullRequest
1 голос
/ 11 октября 2011

В моем приложении для iOS у меня есть набор одноэлементных объектов, которые создаются делегатом моего приложения при запуске приложения, и они должны быть доступны из любого контроллера представления приложения.Эти объекты хранятся как свойства делегата приложения.

Я хотел бы знать, лучше ли получать ссылки на эти объекты каждый раз, когда мне это нужно (метод [SharedAppDelegate.singletonName]), или это лучше?сохранить частную ссылку для каждого контроллера представления, которому будет нужен объект?

Может быть, есть компромисс, основанный на том, сколько раз я получу доступ к этому объекту?Или я просто обдумываю и разницы практически нет?

Заранее большое спасибо.

1 Ответ

2 голосов
/ 11 октября 2011

Зачем хранить ссылку в делегате приложения, а не в статической переменной в самом объекте-одиночке - как это обычная практика?

Если вас беспокоят проблемы с производительностью, поскольку вы инициализируете много объектов в инициализации синглетонов, просто выполняйте ленивую инициализацию, когда требуются данные.

Хранение объекта в делегате приложения - не настоящий синглтон. Например, вы можете создать синглтон с помощью GCD.

@interface MYSingleton

+ (id)sharedInstance;

@end

@implementation MYSingleton

+ (id)sharedInstance {
  static dispatch_once_t once;
  static MyFoo *sharedInstance;
  dispatch_once(&once, ^{
    sharedInstance = [[self alloc] init];
  });
  return sharedInstance;
}

@end

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

...