iOS Broadcast
3.31K subscribers
1.7K photos
84 videos
972 links
Подборка новостей и статей для iOS разработчиков.

Новости Kotlin и мультиплатформы @kotlin_broadcast
Новости Android @android_broadcast
Реклама и прочее @android_broadcast_bot
Download Telegram
Минимизируем человеческий фактор в Swift

Несколько инструментов, которые позволяют команде работать комфортно и эффективно:
👉 SwiftGen - менеджеринг ресурсов в приложении
👉 SwiftLint - единый code style на проекте
👉 XcodeGen - заранее решаем мердж-конфликты в проекте
В статье также есть инструкция по установке и настройке каждого из инструментов

#tools
👍9
Using Tuples to do Sorting Operations in Swift

Задача реализовать сортировку фильмов по названию, году и режиссёру. На первом скрине - обычный способ. На втором - вариант реализации сортировки по нескольким параметрам с использованием tuple.

#swift
🔥15🤔5
Видео Do iOS 2022

Записи всех выступлений на конференции Do iOS, которая прошла 8 и 9 ноября 2022 года в Амстердаме. Посмотреть на досуге 📺

#доклады
👍3
How to use SwiftUI as UIView in Storyboard

👉 Добавляем Container View в Storyboard
👉 Убираем из него дефолтный view controller
👉 Добавляем UIHostingController в Storyboard
👉 Встраиваем UIHostingController в container view
👉 Создаем segue outlet
👉 Реализуем IBSegueAction как на скрине

#swiftUI
👍3
How to remove duplicate items from Array in Swift

Два способа убрать повторения в массиве:
1. С использованием модуля Swift Algorithms: первое изображение
2. Кастомный extension для Array: реализация - второе изображение, объяснение - третье

#swift
👍15🤔3👎1
How We Reduced Our iOS App Launch Time by 60%

В Амазон подсчитали, что каждая задержка в 0,1 секунду при загрузке экрана приводит к 1% потери прибыли 🤯
Для Амазона 1% прибыли - это 3.8 млрд$. В приложенной статье автор как раз рассказывает о том, как сократить время закгрузки приложения на 60%!
Вот несколько его советов:
👉 Вместо инициализации String(describing:) - используйте ObjectIdentifier(). Такой трюк уменьшил время закгрузки приложения на 11%
👉 Прекратите преобразовывать ненужные объекты в AnyHashable. 29% буста при запуске прилежения
👉 Проверяйте инициализацию сторинних фреймворков - до 40%

#optimization
👍7👎1
6 Languages for iOS App Development in 2023

На чем в теории можно написать приложение под iOS:
👉 Swift, чтобы сделать приложение нативно и развивать его в дальнейшем
👉 C# для создания приложения на Xamarin для iOS, и для Android. Подойдет, если в вашей команде уже есть разработчики на C#
👉 Objective C для поддержки старых приложений, но точно не для написания новых
👉 Java, если у вас уже есть Android приложение и вы хотите быстро его перенести на iOS с помощью Codename One
👉 JavaScript, если хотите сделать веб-приложение доступным для iOS с помощью React Native
👉 Dart, если вы хотите создать как веб-приложение, так и приложение для iOS на Flutter

#languages
😁12👎2👍1🤩1
На этой неделе был пост про Swift Charts. А вот и видеоурок вместе с подборкой видео за неделю

📺 Swift Charts - строим красивые графики из коробки (59 мин)
📺 Как стал IOS разработчиком. Мой путь и советы новичкам (34 мин)
📺 Видео Do iOS 2022 (14 видео)
📺 Custom Environment Values in SwiftUI (22 мин)
📺 Why You Should Use The SwiftUI Coordinator Pattern (18 мин)
📺 Новости мобильной разработки от Android Broadcast (18 мин)

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

#подборкавидео
👍4👎1
Диспетчеризация методов в Swift

Диспетчеризация метода – это процесс выбора имплементации метода при его вызове. Очень полезно повторить перед собеседованием 👍. В Swift доступно несколько видов диспетчеризации:
👉 Direct Dispatch (статическая) определяет однозначно реализацию метода на этапе компиляции. Самый быстрый тип диспетчеризации. Применяется, когда метод не может быть переопределен.
👉 Table Dispatch (динамическая) делится на Virtual Table для наследования у классов и Witness Table для работы с протоколами
👉 Message Dispatch в основном используется в связке с Objective-C. Позволяет реализовать KVO/KVC и method swizzling

#swift
👍20👎2
Quickly find retain cycles in your app with this one trick

Retain cycle - ситуация, когда объект не может быть удален из памяти из-за цикла сильных ссылок.
Автор предлагает лайфхак, как его обнаружить.
Создаем symbolic breakpoint как на скрине. Он будет срабатывать при деаллокации UIViewController и издавать звук. Теперь при навигации в приложении обращайте внимание на отсутствие звука при закрытии экрана. В такой ситуации скорее всего UIViewController остается в памяти.

Как вам такой оригинальный способ дебага по звуку? 😁

#memory
👍22🥰4👎2🤯1
Выручка Apple в 1 квартале 2023 снизилась на 5%

Снижение выручки на 5% в годовом исчислении представляет собой крупнейшее квартальное снижение выручки Apple с 2016 года.
Вот полная разбивка за 1 финансовый квартал 2023 года по сравнению с данными за 1 финансовый квартал 2022 года:
👉 iPhone: 65.78 млрд долларов (против 71.63 млрд долларов год назад)
👉 Mac: 7.74 млрд долларов (против 10.85 млрд долларов)
👉 iPad: 9.40 млрд долларов (против 7.25 млрд долларов)
👉 Носимые устройства, товары для дома и аксессуары: 13.48 млрд долларов (против 14.70 млрд долларов)
👉 Сервисы: 20.78 млрд долларов (против 19.5 млрд долларов)

#apple
😁4👎1
Forwarded from Mobile Developer (Алексей Гладков)
Опрос для iOS-разработчиков. Какой процент кода в вашем приложении написан на SwiftUI
Anonymous Poll
71%
0-20
4%
20-40
5%
40-60
5%
60-80
24%
80-100
👍9👎1
The Coordinator Pattern: A Simple, Scalable Solution for iOS App Navigation

Координатор - паттерн, используемый для работы с навигацией и флоу. Объект координатора отвечает за навигацию и общение между экранами.
Для чего он нужен?
👉 Separation of concerns: Помогает сосредоточить обработку навигации и флоу в одном месте для упрощения понимания и поддержки.
👉 Reusability: позволяет разделять viewController'ы, облегчает их переиспользование и позволяет изменять флоу без изменений внутри модулей
👉 Scalability: проще следить за навигационным деревом, тем самым проще добавлять новые фичи и менять навигацию
👉 Координаторы могут быть соединены вместе в цепочку и создавать свою иерархию

#architecture
🔥6👎1
Swift IOS Interview Questions And Answers

Для тех кто проходит собеседования, проводит их или хочет улучшить свой технической английский 🧐
👉 Language features
👉 UI – Auto layout & UIKit
👉 Threading & concurrency 
👉 Memory management
👉 Architecture and design pattern

#interview
👍6👎3
Annotation Injection with compile-time safety in Swift

Пример реализации DI с:
👉 Compile-time safety
👉 Меньшим количеством бойлерплейта
👉 Синтаксическим сахаром (annotations)
👉 Без сторонних зависимостей

На изображении пример. Сначала создаем сервис, потом фабрику для него, потом DI контейнер, менеджер, propertyWrapper и наконец используем в классе.

#swift
👍4👎2
Пишем персистентный слой на Realm

В iOS в основном для реализаций БД используются CoreData и Realm.
В статье пример реализации сервиса сохранения данных на Realm

#ios
👍7👎31🤔1