Какао-синглтон и общие экземпляры

Например, почему Apple не использует свои классы как чистый синглтон, хотя класс UIApplication предоставляет вам доступ к синглтону UIApplication, например:

UIApplication *sharedApplication = [UIApplication sharedApplication];

Ничто не мешает вам явно создать экземпляр экземпляра UIApplication, например:

UIApplication *newApplication = [[UIApplication alloc] init];

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

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

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

Ответы на вопрос(2)

то, что Apple называет синглтоном, не является ни реальным синглтоном ни в общепринятом определении, ни вОпределение Apple.

[…] Тогда как с одноэлементным классом может быть только один экземпляр класса на процесс

Тем не менее, реализацияобщий экземпляр довольно просто в Swift:

class SomeManager {
  static let sharedInstance = SomeManager()
}

В Objective-C оба подхода (одиночные и совместно используемые экземпляры) реализуемы, но совместно используемый экземпляр легче реализовать снова.

С другой стороны, нет недостатка в использовании шаблона общего экземпляра. Вы должны следовать этому.

Кстати: вы не получите исключение во всех случаях общих экземпляров. Некоторые классы позволяют вам выделить второй экземпляр, что похоже на незаконный.

который разработала Apple, и мы, разработчики, следуем созданию приложений.

Короче говоря, Apple предпочла не проводить свои занятия в качестве синглетонов в качестве ДИЗАЙНЕРСКОГО ВЫБОРА. И, опять же, в отношении исключения времени выполнения, которое вы имели для UIApplication, каждому приложению предоставляется только один экземпляр UIApplication.

Вы просто не можете создать свое собственное приложение UIA и делать так, как вам нравится. Это нарушает правило.

Но, тем не менее, мы, как разработчики, можем создавать и использовать синглтоны в наших приложениях в любое время. И Apple не разделяет с нами и этого.

Важно то, какой выбор дизайна вы используете для разработки приложения! У Apple есть свой путь, у нас есть свой путь! И пока все работает, все счастливы!

Что касается правильного пути, этого просто не существует. Вы создаете путь по ходу дела.

Apple c придерживается этой модели благодаря опыту ее разработчика и тому, что стремилось стать лучшим выбором в данное время. И это продолжается до сегодняшнего дня, как это хорошо. Скажем, когда-нибудь это сломается, тогда Apple с радостью изменит свои стандарты.

И, что касается вашего последнего вопроса, по какому стандарту или шаблону следовать, вы можете следовать любым удобным для вас способом. Это ваш выбор дизайна!

С уважением,
Суман Адхикари

 Ariel20 июл. 2016 г., 10:10
Ну, тогда я бы искал ответ, который вы бы приняли, сэр! Время учиться для нас обоих!
 Ajay Kumar20 июл. 2016 г., 09:36
Apple ничего не делает случайным образом, я просто пытаюсь понять, в чем причина (выгода) этого конкретного способа, поэтому я задал этот вопрос. И я, и все знаем, что все работает хорошо, поэтому нет необходимости писать ответ за это. С наилучшими пожеланиями, Ajay

Ваш ответ на вопрос