Я изучаю разработку приложений Swift и iOS, и мне было интересно, в каких случаях (если они есть) я должен использовать глобальные переменные и константы в приложении iOS.Когда использовать глобальные переменные в Swift
Глобальные переменные - это переменные, которые определены вне любого контекста функции, метода, закрытия или типа. Локальными переменными являются переменные, которые определены в контексте функции, метода или закрытия.
Использование глобальных переменных, как правило, кажется, безвкусный и не рекомендуется (это на самом деле не рекомендуется большинством руководств и учебных пособий), а также для передачи данных между контроллером зрения я использую метод prepareForSegue(_: sender:)
.
Однако есть случаи, когда мне кажется, что использование глобалов сделает код более простым и быстрым.
Например, Apple рекомендует хранить NSDateFormatter
или NSNumberFormatter
для каждого шаблона формата и не воссоздавать или изменять его каждый раз, когда это необходимо. В приложении, которое я разрабатываю, чтобы изучить язык, большинство контроллеров представлений используют NSDateFormatter
и NSNumberFormatter
, а создание нового для каждого контроллера представления может быть не очень хорошей идеей. Я мог бы передать его с помощью prepareForSegue, но я подумал, что, возможно, в этом случае было бы лучше использовать глобальный var, содержащий экземпляр форматирования, который мог бы использовать каждый контроллер вида.
Итак, есть ли случаи, когда я должен использовать глобальные переменные?
Я так не считаю. Даже для примера, который вы предоставляете, вы можете «хранить» эти форматиры как свойства, например, singleton 'Settings'. И даже вызвав именованный синглтон, вы не сможете выполнить глобальный const, а через статическое свойство класса. – courteouselk
Да, если вы хотите создать переменную класса в swift для класса, вам нужно использовать глобальный. После того, как переменные класса поддерживаются быстрыми, на самом деле не должно быть никаких оснований для глобального, если вам не нужно повышать производительность. – Knight0fDragon
Глобалы удобны, но их следует избегать. Google «globals are evil», и вы найдете массу дискуссий о том, почему это плохо, альтернативы и т. Д. К сожалению, этот вопрос (а) обсуждался здесь много раз; и (б) является вопросом мнения, так или иначе, поэтому этот вопрос должен быть закрыт. – Rob