Swift Tips
3.28K subscribers
449 photos
16 videos
2 files
427 links
Ежедневные советы, подсказки, лайфхаки и статьи по iOS и Swift.

По всем вопросам: @artemiygreg
Найти проект: @ios_job
Download Telegram
10 quick tips to increase your iOS code quality

Несколько небольших советов, которые помогут улучшить качество кода.

• Use the extension pattern to group chunks of code
• Define a maximum number of lines per file
• Create variables and functions with descriptive names
• Take advantage of typealias
• Take care of the “no-happy path”
• Review force unwrap & indexes
• How do you handle sensitive information?
• Avoid code duplication
• Avoid hard-coding messages directly in the code
• Take advantage of pre-built-in features

Читать (En)
Шейдеры в iOS для начинающих

В iOS 17 пришло значимое обновление — теперь добавить шейдер можно к любой View, а значит, вся интеграция стала проще и растровых эффектов появится больше.

В статье разбираются основы: что за шейдеры, что за чудо-код надо написать, как это подключить и как в целом погрузиться в тему + рассматриваются несколько сложных примеров.

Читать (Ru)
Jailbreak checker — как обезопасить свое iOS-приложение

Статья о том, как можно обезопасить своё iOS-приложение на Jailbreak-нутом девайсе.

• Кто такой этот ваш Jailbreak?
• Зачем его отслеживать?
• Как же его отследить?
• Как предупредить пользователя и обезопасить приложение?
• Как теперь все протестить?

Читать (Ru)
3 Cool new features of Swift 5.9

Статья с обзором нескольких новых фич из Swift 5.9.

🟢Using if and switch as expressions
🟢Parameter Packs
🟢Macros

Вот тут можно почитать про whats new in Swift 5.9.

И еще несколько полезных ссылок

👉 Value and Type parameter packs in Swift explained with examples
👉 Hidden feature: if and switch

Читать (En)
Please open Telegram to view this post
VIEW IN TELEGRAM
Дебаггинг приложения без Xcode. Зачем?

Статья от Альфа-Банк про то, как они делали свой дебаг-инструмент и научились дебажить приложение без Xcode, тем самым упростив жизнь себе и тестировщикам.

Читать (Ru)
CD-диск на шейдерах и NameDrop в iOS 17

Описать материал через шейдер сложно, потому что код совершенно другой, но создать динамичный эффект — ещё сложнее.

В статье разбирается переливающийся диск и нашумевший NameDrop в iOS 17.

Читать (Ru)
Два по цене одного: snapshot-тесты на основе SwiftUI Preview

Статья о том, как с использованием snapshot-тестов отлавливать баги верстки в SwiftUI на этапе разработки.

Читать (Ru)
Книги по Swift и iOS-разработке для начинающих специалистов и профессионалов

Подборка книг для изучения Swift / iOS.

🟢Swift. Основы разработки приложений под iOS, iPadOS и macOS
🟢Swift для детей. Самоучитель по созданию приложений для iOS
🟢Swift Apprentice: Fundamentals (First Edition): Beginning Programming in Swift
🟢Swift подробно
🟢Head First. Изучаем Swift
🟢Swift Programming: The Big Nerd Ranch Guide 3rd Edition
🟢Swift Cookbook: Over 60 proven recipes for developing better iOS applications with Swift 5.3

Читать (Ru)
Please open Telegram to view this post
VIEW IN TELEGRAM
Скорее жив, чем мёртв: тенденция по развитию iOS технологий

Размышления на тему развития iOS технологий и возможые варианты развития в смежные направления на случай непредвиденных ситуаций 😉

Обзор технологий был сделан для того, чтобы показать, что iOS разработка жива, и не стоит бояться того, что завтра мы останемся без работы.

Читать (Ru)
Bottom Sheet View Controller with Dynamic Content Height in iOS

Пример реализации BottomSheet с кастомной конфигурацией.

• Automatic resizing of the bottom sheet based on the content height

• A draggable top view for dismissing the bottom sheet

• A dimmed background that also triggers the dismiss action

• Customizability to suit different use cases

• Smooth and interactive presentation and dismissal animations

Читать (En)
Forwarded from Mobile Native ️️
Что посмотреть на выходных. Подборка полезностей 👇

Очередная порция интересных и полезных видосов.

Собеседования

• Собеседование в Яндекс. Платформа Android
• Советы к собеседованию
• Собеседование на Mobile Developer
• Cобеседование Android-разработчика

iOS💸

• Пишем свой рендеринг графики на SwiftUI и запускаем на нем Doom
• Compose for iOS под капотом
• Декларативная навигация в iOS-приложении
• Как приручить iPhone, или Общаемся с телефоном по проводу
• О дивный новый мир со Swift Concurrency
• Новые подходы к работе с регулярными выражениями в Swift. Просто о сложном
• Прожарка Tuist
• Как ускорить сборку проекта и не остановить разработку
• How to Build a Custom Sheet in SwiftUI!
• New and Deprecated APIs in iOS 17
• 8 Tips to Optimize your iOS App
• Нарисуй свой TabBar
• Навигация в iOS приложении. Coordinator pattern
• Async / Await. Лучшие практики, советы и особенности
• SwiftUI — уже пора?

Android 🖥

• Корутинные загадки
• Измеряем sequence
• Android-Driven KMM
• Gradle Kotlin DSL: о чем умолчали в документации
• Здоровье вашей Gradle-сборки
• Оно само: используем плагины компиляции
• How to Implement Pinch Zoom Gestures in Jetpack Compose
• Introduction to Security of Mobile Applications for Android
• KMM + Composable Architecture в Умной Камере
• Compose, еще раз Compose и развитие сообщества
• How to Build a Custom Gradle Plugin to Share Project Config - Multi-Module Architecture

Common 🛠

• Мифы и легенды о безопасности мобильных приложений
• Какие проблемы могут возникать с безопасностью в мобильных приложениях
• Как мы Kotlin Multiplatform внедряли
• Compose Multiplatform для iOS и Android
• Декларативная архитектура и навигация с Decompose
• Почему джунов не берут на работу
• BDUI — что это и зачем на примере DivKit
Please open Telegram to view this post
VIEW IN TELEGRAM
iOS Microapps Architecture

Серия из 4-х частей про модульную архитектуру и Microapps в частности. В статьях в качестве примера демонстрируется реализация проекта по Microapps с помощью SPM.

• Part 1
• Part 2
• Part 3
• Part 4

Пример кода на GitHub → Microapp Architecture Demo
Mastering Observation framework in Swift

Apple представила новый фреймворк Observation, основанный на макрофункциях языка Swift. Observation в сочетании с функциями Swift Concurrency позволяет заменить Combine, который выглядит устаревшим по мнению Apple.

В статье рассказывается, как использовать фреймворк Observation для обработки потоков данных в наших приложениях.

Перевод от AppTractor → Осваиваем фреймворк Observation в Swift

Читать (En)
Forwarded from Mobile Native ️️
Backend Driven UI с точки зрения бэкенда: к чему готовиться, если вы решили на него перейти

В статье рассказывается, что такое BDUI с точки зрения бэкенд-разработчика, с какими сложностями можно столкнуться, как собирать JSON на бекенде и т.д.

Читать (Ru)
10 tips to increase your iOS code quality – Part 2

Вторая часть с небольшими советами, которые помогут улучшить качество кода.

🟢Composable UI
🟢Reusable styling with view modifiers
🟢Include Unit Tests
🟢Code documentation
🟢Enums
🟢Core Data + SwiftUI
🟢Coding Style Guide
🟢Dependency injection
🟢Design System

Первая часть тут.

Читать (En)
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Mobile Native ️️
Kotlin Multiplatform перешёл в stable. Что это значит?

Что изменилось с переходом в релиз.

👉 Технология стабильна
👉 Соблюдение совместимости
👉 Экосистема
👉 База материалов по KMP
👉 Ускорение скорости сборки
👉 Развитие библиотек
👉 Улучшение интеропа со Swift
👉 Compose multiplatform

Читать (Ru)
Ускоряем прохождение iOS UI-тестов

Серия статей про то, как ускорить прохождение UI-тестов: что такое test runner и какие бывают, зачем распараллеливать тесты, зачем стартовать приложение с определенного экрана и какие способы реализации существуют и т.д.

• Запуск тестов без сборки проекта
• Распараллеливание тестов
• Старт приложения с определенного экрана
Mastering in SwiftUI

Большая и полезная статья с примерами кода, в которой рассматриваются важные моменты, которые помогут вам повысить производительность и эффективность разработки.

• Which architecture is better: Redux or MVVM?
• Use @StateObject and @ObservableObject
• Create @Published variable with care
• Breaking down the content of the body into smaller to minimize the compilation time
• Prefer @State for the animations instead of @Published
• Declare Observable objects at a specific place to avoid unnecessary UI update
• Find which data change is causing a SwiftUI view to update
• Use LazyHStack and LazyVStack if you have a long list
• Is there anything similar to viewDidLoad()?
• Use UIKit components directly in SwiftUI
• Conditional modifier
• Avoid using .padding and .frame together
• Use GeometryReader wisely
• Use AnyView occasionally
• Must use ID with Foreach and List
• Prefer using Text over Label
• Use Group to return multiple view instances
• Use .fixedSize() to specify that the frame doesn’t change

Перевод от AppTractor → Мастерство работы в SwiftUI

Читать (En)
Прививка от созависимости. Зачем нужен DI и как он работает в iOS-приложениях hh.ru

Статья от hh.ru, в которой рассматриваются основы DI, какую проблему решает этот принцип, возможные варианты реализации: паттерны и популярные библиотеки + подробно рассказывают как работает DI в многомодульном iOS проекте hh.ru.

👉 Какую проблему решает DI
👉 Что такое DI и инверсия зависимостей?
👉 Примеры реализации: библиотеки и паттерны
👉 Готовые библиотеки
👉 О многомодульности в проекте hh.ru

Читать (Ru)
Всех с наступающим Новым Годом! 🎅🎄

2023 год был крутым и продуктивным, хоть и со своими заморочками.

В новогом году желаю вам оставаться или стать крутым спецом, разиваваться, крутых проектов и успехов во всех сферах и начинаниях.

И конечно же всем спасибо, за то, что читаете канал, репостите, оставляете реакции.

С наступающим друзья, ура!🥂
Please open Telegram to view this post
VIEW IN TELEGRAM