Является ли использование переменных stati c хорошей практикой для хранения переменных при переходе между viewControllers? - PullRequest
1 голос
/ 20 января 2020

Я создаю игру, используя spriteKit. В режиме landscape отображается игровая доска, а при переключении на portrait отображается информационный экран. Теперь, возвращаясь в режим landscape, gameBoard переинициализируется, сбрасывая все изменения, сделанные до переключения ориентации устройства.

Я решил это, сохранив data в class с static variables. Это работает, но, похоже, могут быть некоторые проблемы с этим подходом. Поскольку static variables доступны практически во всем приложении, и они всегда содержат значение, мне кажется, что они близки к global variables. Я знаю, что они не одинаковы, но постоянное variables на заднем плане звучит как нагрузка на память, что снижает производительность.

Я прав в этом или все нормально? Если это плохой подход, что я должен сделать, чтобы сохранить состояние при переключении между viewControllers?

Из того, что я прочитал, немного однозначно, являются ли переменные static "ОК" или нет, так Я хотел бы получить определенный ответ на этот вопрос (если он есть).

1 Ответ

2 голосов
/ 20 января 2020

Преимущества

  1. Может выполнять операции с мета-объектами (например, проверять что-то перед созданием объектов, вести подсчет количества объектов)

  2. Может выполнять операции, которые не имеют ничего общего с объектами, но все же вы хотите, чтобы они были привязаны к классу.

Недостатки

Обычно используемый для определения переменных c иногда приводит к проблемам из-за доступа различных объектов.

  1. Не привязаны к объектам, поэтому не отражают чисто объектно-ориентированный подход.

  2. Необходимо синхронизировать, чтобы избежать конфликтов обновлений несколькими объектами и потоками. в нем упоминается, почему иногда использование функций и переменных stati c может быть неправильным

Для получения дополнительной информации см. следующую статью,

https://r.je/static-methods-bad-practice Надеюсь, это поможет

...