3 способа использования enum, которые должны быть в вашем арсенале
💪 Перечисление (enum) - это очень мощный тип в Swift. Каждый из нас использует его практически в каждом проекте.
В публикации рассматривается три блока:
1️⃣ Сложные случаи с привязкой значений.
2️⃣ Если нас интересуют конкретный кейс перечисления, то можно использовать
3️⃣ Если связанное значение optional, то также можно использовать соответствующий шаблон. Это будет более понятно на конкретных примерах из статьи.
💪 Перечисление (enum) - это очень мощный тип в Swift. Каждый из нас использует его практически в каждом проекте.
В публикации рассматривается три блока:
1️⃣ Сложные случаи с привязкой значений.
2️⃣ Если нас интересуют конкретный кейс перечисления, то можно использовать
if let
и guard let
.3️⃣ Если связанное значение optional, то также можно использовать соответствующий шаблон. Это будет более понятно на конкретных примерах из статьи.
🔥4🤮2
Проблемы многопоточки: Race Condition vs Data Race
Как все знаю многопоточка нужна для ускорения задач и их фрагментов на устройствах. Но все не так просто и любой инструмент дает свои проблемы. Выше, в опросе, мы уже столкнулись с гонкой.
Race condition и data race — две разные проблемы многопоточности, которые часто путают.
Эти проблемы очень похожи, но есть различия:
Race Condition — это недостаток, возникающий, когда время или порядок событий влияют на правильность программы.
Data Race — это состояние когда разные потоки обращаются к одной ячейке памяти без какой-либо синхронизации и как минимум один из потоков осуществляет запись.
Как все знаю многопоточка нужна для ускорения задач и их фрагментов на устройствах. Но все не так просто и любой инструмент дает свои проблемы. Выше, в опросе, мы уже столкнулись с гонкой.
Race condition и data race — две разные проблемы многопоточности, которые часто путают.
Эти проблемы очень похожи, но есть различия:
Race Condition — это недостаток, возникающий, когда время или порядок событий влияют на правильность программы.
Data Race — это состояние когда разные потоки обращаются к одной ячейке памяти без какой-либо синхронизации и как минимум один из потоков осуществляет запись.
👍3💩2
🧑💻Class && Struct (классы и структуры)
💻Отличный материал, который раскрывает основные отличия структуры от классов, а так же их применение!
По умолчанию Apple рекомендует использовать структуры. Структуры также полезны в следующих сценариях:
- Используйте структуры для простых типов данных. Воспринимайте их как простые базы данных, которые вы можете использовать в своем коде. Поскольку они четко определены и часто не нуждаются в сложных отношениях между объектами.
- В многопоточной среде, например, с подключением к базе данных в другом потоке, структуры более безопасны. и могут быть безопасно скопированы из одного потока в другой. Классы не имеют присущей им безопасности, если только они не намеренно сделаны поточно-ориентированными.
- Когда свойства структуры в основном являются значимыми типами, например String, имеет смысл обернуть их в структуру вместо класса.
Использование структур имеет дополнительное преимущество - вам проще анализировать изменения данных в вашем коде. Когда тип является структурой, вы можете быть уверены, что никакая другая часть вашего кода не сможет удерживать ссылку на объект. То есть структура не может быть изменена какой-либо другой частью вашего кода.
А дальше в статье https://habr.com/ru/post/592341/
💻Отличный материал, который раскрывает основные отличия структуры от классов, а так же их применение!
По умолчанию Apple рекомендует использовать структуры. Структуры также полезны в следующих сценариях:
- Используйте структуры для простых типов данных. Воспринимайте их как простые базы данных, которые вы можете использовать в своем коде. Поскольку они четко определены и часто не нуждаются в сложных отношениях между объектами.
- В многопоточной среде, например, с подключением к базе данных в другом потоке, структуры более безопасны. и могут быть безопасно скопированы из одного потока в другой. Классы не имеют присущей им безопасности, если только они не намеренно сделаны поточно-ориентированными.
- Когда свойства структуры в основном являются значимыми типами, например String, имеет смысл обернуть их в структуру вместо класса.
Использование структур имеет дополнительное преимущество - вам проще анализировать изменения данных в вашем коде. Когда тип является структурой, вы можете быть уверены, что никакая другая часть вашего кода не сможет удерживать ссылку на объект. То есть структура не может быть изменена какой-либо другой частью вашего кода.
А дальше в статье https://habr.com/ru/post/592341/
Хабр
Swift. Class && Struct (классы и структуры) ч.1
Предисловие Данный материал, рассчитан на новичков в разработке, сконцентрированных на языке Swift, где я простым языком постараюсь максимально доходчиво донести базовые вещи, которые иногда бывает...
🔥7😱2
Верстка кодом🗿
Отличный материал, хорошая подача. Для тех кто хочет научиться верстать UI элементы кодом. Советую к прочтению. 🏰
https://www.hackingwithswift.com/read/8/2/building-a-uikit-user-interface-programmatically
Отличный материал, хорошая подача. Для тех кто хочет научиться верстать UI элементы кодом. Советую к прочтению. 🏰
https://www.hackingwithswift.com/read/8/2/building-a-uikit-user-interface-programmatically
👍10
Пример создания приложения Todo list для iOS с использованием VIPER
Крутая статья про использование архитектуры VIPER. Советую к прочтению.
🤔Существует множество архитектур на выбор: MVC, MVVM, MVP, View State, VIPER и многие другие.
Архитектура, которую мы выберем, будет определять, как будет построено программное обеспечение и как оно будет масштабироваться по мере роста.
https://www.alfianlosari.com/posts/building-todo-list-ios-app-with-viper-architecture/
Крутая статья про использование архитектуры VIPER. Советую к прочтению.
🤔Существует множество архитектур на выбор: MVC, MVVM, MVP, View State, VIPER и многие другие.
Архитектура, которую мы выберем, будет определять, как будет построено программное обеспечение и как оно будет масштабироваться по мере роста.
https://www.alfianlosari.com/posts/building-todo-list-ios-app-with-viper-architecture/
👍11
Как сделать код производительным?
В документации на гите есть много крутых статей.
Я убежден, что если прочитаешь все — станешь гением и единственным человеком в мире, кто смог это сделать.
Поделюсь одной крутой страницей, где прячутся крутые советы по оптимизации своего кода
https://github.com/apple/swift/blob/main/docs/OptimizationTips.rst#advice-use-final-when-you-know-the-declaration-does-not-need-to-be-overridden
В документации на гите есть много крутых статей.
Я убежден, что если прочитаешь все — станешь гением и единственным человеком в мире, кто смог это сделать.
Поделюсь одной крутой страницей, где прячутся крутые советы по оптимизации своего кода
https://github.com/apple/swift/blob/main/docs/OptimizationTips.rst#advice-use-final-when-you-know-the-declaration-does-not-need-to-be-overridden
GitHub
swift/docs/OptimizationTips.rst at main · swiftlang/swift
The Swift Programming Language. Contribute to swiftlang/swift development by creating an account on GitHub.
👍10
Добавление элементов в массив
Добавить элементы в массив можно двумя способами. Первый способ – использовать метод .append(). Для этого пишем его после имени массива, а в скобках указываем значение, которое хотим добавить в конец. Второй способ – использовать оператор присваивания со сложением (+=).
Кстати, с помощью оператора += можно присвоить сразу несколько элементов.
Добавить элементы в массив можно двумя способами. Первый способ – использовать метод .append(). Для этого пишем его после имени массива, а в скобках указываем значение, которое хотим добавить в конец. Второй способ – использовать оператор присваивания со сложением (+=).
Кстати, с помощью оператора += можно присвоить сразу несколько элементов.
👍17
Полезный материал снова о базовых вещах с памятью
Программист — это впервую очередь не заложник своей платформы. И изучая иос не нужно забывать, что этот мир яблок не отдельный остров, который далек от компьютерных наук. А лишь абстракция над общим устройством компьютеров
https://youtu.be/TajLTcjBgIg
Программист — это впервую очередь не заложник своей платформы. И изучая иос не нужно забывать, что этот мир яблок не отдельный остров, который далек от компьютерных наук. А лишь абстракция над общим устройством компьютеров
https://youtu.be/TajLTcjBgIg
YouTube
Лекция 3. Работа с памятью, выполнение программ (Программирование на C++, часть 1)
https://compscicenter.ru/
Лекция №3 в курсе "Программирование на C++, часть " (осень 2018).
Преподаватель курса: Валерий Михайлович Лесин
Лекция №3 в курсе "Программирование на C++, часть " (осень 2018).
Преподаватель курса: Валерий Михайлович Лесин
👍3