Будете ли вы использовать lazy var
или нет, зависит от вашего кода и его контекста. Это не плохо и не хорошо само по себе. Вы должны решить, когда это уместно.
Прежде чем вы сможете это решить, вы должны знать, что такое lazy var
.
Что такое lazy var
?
Ленивая инициализация — это концепция, при которой инициализация (конструкция) содержимого переменной откладывается до ее первого использования. Первый доступ к такой переменной запускает инициализацию. Поскольку контент не создается до тех пор, пока переменная не используется (необходима), использование ленивых инициализированных переменных может сэкономить ресурсы.
Это основная причина ленивой инициализации. Вы не создаете что-то, пока вам это не нужно. Это также логика, которую вы будете использовать при принятии решения о том, должно ли что-то быть lazy var
или нет.
Если вы имеете дело с представлениями (или чем-то еще), которые всегда видны (необходимы), нет смысла использовать ленивую инициализацию. С другой стороны, когда вы имеете дело с экземплярами, которые не всегда нужны, использование lazy var
оправдано.
Если ваше представление всегда видно в представленном контроллере представления, вы не добьетесь многого, сделав его ленивым. Если он виден только при определенных обстоятельствах — например, когда пользователь разворачивает какую-то свернутую панель — тогда имеет смысл сделать его ленивым. Это ускорит загрузку вашего контроллера представления и по умолчанию будет использовать меньше памяти.
Что касается безопасности потоков, lazy var
не являются потокобезопасными в Swift.
Это означает, что если два разных потока попытаются получить доступ к одному и тому же lazy var
одновременно, до того, как такая переменная будет инициализирована, возможно, что один из потоков получит доступ к частично сконструированному экземпляру.
Вы можете найти больше о безопасности потоков в:
Swift - является ли ленивый var потокобезопасным?
Сделать "ленивую переменную" потокобезопасной
person
Dalija Prasnikar
schedule
18.11.2017
lazy var
. В частности, посмотрите раздел о том, когда его использовать: mikebuss.com/2014/ 22/06/lazy-initialization-swift Теперь, просматривая три связанные ссылки в правой колонке вашего вопроса, которые предполагают, что они похожи на ваши, я обнаружил, что ни одна действительно ответьте на вопрос - как ссылка выше - о *когда использовать каждый из них. Они либо объясняют, что такоеlazy
(и почему вы должны использоватьvar
, или почему что-то не строится. Я голосую за это, надеясь, что кто-то здесь может дать вам хороший ответ на хороший вопрос - person dfd   schedule 18.11.2017