Я определенно не согласен с тем, что одиночки - это зло. Возможно, их иногда используют слишком часто, но в некоторых случаях они идеально подходят для работы. В некоторых приложениях имеет смысл иметь какой-то общий менеджер данных. Шаблон Singleton широко используется в самом SDK (делегаты приложений, общие менеджеры, центры по умолчанию и т. Д.). Чаще всего это не «чистые» синглтоны, так как вы можете получить доступ к общему экземпляру, но также можете создавать новые экземпляры, если это необходимо.
Вопрос, который вам нужно задать себе, состоит в том, было бы полезно иметь доступ к одному экземпляру диспетчера данных из любого места в любое время, а если это не так, то, вероятно, единственная единица не нужна. Однако если вы собираетесь использовать синглтоны в многопоточных средах, вам нужно беспокоиться о состоянии гонки (может ли один поток изменить ресурс, пока другой обращается к нему), в документации есть хорошие объяснения того, как наилучшим образом добиться этого в Какао. ,