Я пытаюсь понять причину, по которой dinpatch_once_t и _sharedObject не установлены на 0 и nil соответственно при повторных вызовах sharedInstance. Мне кажется, что так кодируется, что локальные переменные будут повторно инициализированы, так как вы можете сбросить статическое значение, верно? Какое основное из управления памятью ARC или iOS я не понимаю здесь?Singleton in iOS
+ (id)sharedInstance
{
// structure used to test whether the block has completed or not
static dispatch_once_t p = 0;
// initialize sharedObject as nil (first call only)
__strong static id _sharedObject = nil;
// executes a block object once and only once for the lifetime of an application
dispatch_once(&p, ^{
_sharedObject = [[self alloc] init];
});
// returns the same object each time
return _sharedObject;
}