Прочтите этот ответ, а затем иди и прочитайте другой ответ.
Сначала вы должны знать, что означает синглтон и каковы его требования, если вы не понимаете его, тогда вы не поймете решение - вообще!
Чтобы успешно создать синглтон, вы должны выполнить 3:
- Если было условие гонки , мы не должны допускать одновременного создания нескольких экземпляров вашего SharedInstance!
- Запомните и сохраните значение среди нескольких вызовов.
- Создайте его только один раз. Управляя точкой входа.
dispatch_once_t
помогает вам решить условие гонки , разрешив отправку блока только один раз.
Static
помогает вам «запомнить» его значение для любого числа
вызовы. Как это запомнить? Он не позволяет создавать новый экземпляр с таким точным именем вашего sharedInstance, он просто работает с тем, который был создан изначально.
Не используя вызов alloc
init
(т.е. у нас все еще есть методы alloc
init
, так как мы являемся подклассом NSObject, хотя мы НЕ должны их использовать) в нашем классе sharedInstance, мы достигните этого с помощью +(instancetype)sharedInstance
, который ограничен только для , инициированным один раз , независимо от нескольких попыток из разных потоков одновременно и запомните его значение.
Некоторые из наиболее распространенных системных синглетонов, которые поставляются вместе с Какао:
[UIApplication sharedApplication]
[NSUserDefaults standardUserDefaults]
[NSFileManager defaultManager]
[NSBundle mainBundle]
[NSOperations mainQueue]
[NSNotificationCenter defaultCenter]
В основном все, что должно иметь централизованный эффект, должно следовать какому-то шаблону проектирования Singleton.