Область действия ограничена самим классом "SharedManager" (поскольку он объявлен в разделе @implementation, он не будет виден подклассам).
duration переменной является "статической", что означает, что есть одна копия переменной, связанной с самим классом; он не создается / уничтожается при выделении / освобождении экземпляров класса.
Также; если ваш класс предназначен для работы с потоками, вы должны выполнить
@synchronized(self) {
if (myInstance == nil) {
myInstance = [[self alloc] init];
}
к вашему методу sharedInstance, чтобы обработать случай, когда два потока одновременно вызывают sharedInstance.