Когда вы читали о потокобезопасных синглтонах, я нашел Thread safe instantiation singleton здесь на SO, и в принятом ответе этот код:
sharedInstance = [MyClass alloc];
sharedInstance = [sharedInstance init];
Зачем нам выделять методы alloc и init? Автор ответа написал:
А именно, если
init
выделенного класса вызывает вызов методаsharedInstance
, он будет делать это до того, как будет установлена переменная. В обоих случаях это приведет к тупиковой ситуации. Это один раз, когда вы хотите отделитьalloc
иinit
.
Может кто-нибудь, пожалуйста, объясните мне подробно, каковы преимущества этого разделения? Я не мог понять, что имел в виду автор. Мне действительно нужно отделять вызовы методов alloc
и init
, когда я создаю синглтон, даже если я делаю это в dispatch_once()
, который является потокобезопасным??