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

Новости Kotlin и мультиплатформы @kotlin_broadcast
Новости Android @android_broadcast
Реклама и прочее @android_broadcast_bot
Download Telegram
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
iOS App Security: Best Practices

Поддерживаем безопасность в iOS приложениях. Некоторые примеры и способы из статьи:
👉 Apple’s App Sandbox. Каждое приложение в отдельной песочнице
👉 Data Protection API. Встроенное шифрование файлов приложения с 4 уровнями защиты
👉 Keychain. Защищаем чувствительные данные
👉 App Transport Security (ATS) блокирует незащищенные соединения (HTTP)
👉 SSL Pinning
👉 Push-нотификации с помощью Apple’s APNS services
👉 Apple’s CloudKit для хранения данных без бэкенда
👉 Не забывайте убирать принты в коде 😄
👉 CryptoKit - библиотека для шифрования
👉 Обфускация кода на случай установки приложения на джейлбрейкнутый девайс

#security
👍5👎1
Участвует ли Apple в современной ИИ-революции?

Аргументы, почему Apple не отстаёт в ИИ гонке 🤖
👉 Старший вице-президент по машинному обучению и стратегии развития искусственного интеллекта Джон Джаннандреа собрал в Apple лучшую команду из лучших спецов по ИИ. Говорят что у Apple даже есть своя секретная научная лаборатория базирующаяся близ Кембриджского университета
👉 Apple с 2017 года начала встраивать в свои чипы Neural Engine, являющийся встроенным ИИ-ускорителем
👉 И самое главное, что за последние примерно 12 лет Apple скупила уже около 30 стартапов и небольших компаний развивающих ИИ-проекты и AR/VR-проекты использующие ИИ

Больше ссылок по теме:
"Почему Apple может запустить свой поисковик и зачем это нужно компании"
"Так Apple делает свой автомобиль или нет?"

#AI
👍5👎3
Подборка видео на выходные 😎

📺 Watch this before you get the M2 Max Macbook Pro for coding (8 мин)
📺 UIKit или SwiftUI в 2022? (31 мин)
📺 How to Make a Searchable Map View in SwiftUI for Beginners – Step by Step (2023) (45 мин)
📺 Build a SwiftUI ChatGPT macOS App | OpenAI API | Menu Bar (14 мин)

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

#подборкавидео
👍5👎2
Лучшие техники ревью кода

👉 Создайте чек-лист для проверки кода
👉 Ограничьте количество строк кода для ревью за один раз. Это необходимо для того, чтобы обзор проходил с одинаковой эффективностью.
👉 Применяйте средства автоматизации. PVS-Studio (выявляет опечатки, мертвый код, потенциальные уязвимости), SonarQube (проверяет ошибки, соответствие стандартам кодирования, технический долг), AppRefactoring (выявляет дубликаты и пересечения фрагментов кода, предоставляя информацию для уникализации кода), Codacy (выявляет ошибки в коде, проблемы безопасности) и другие
👉 Дайте положительную обратную связь на кодревью

#процессы
👍7
How to write README file for the iOS project

Что должно быть в хорошем Readme?
👉 Название и предложение, коротко описывающее суть проекта
👉 Description - короткое описание проекта, цель и ключевые фичи
👉 Как запустить проект, включая все его зависимости и возможные проблемы
👉 Как использовать проект, документация и примеры
👉 Используемая архитектура и обоснование ее выбора
👉 Описание структуры проекта
👉 Как запустить тесты
👉 Как задеплоить проект, если есть такая возможность
👉 Менеджер зависимостей и как с ним работать, список библиотек с обоснованием их выбора
👉 Workflow: как заводить PR и репортить баги
👉 Тулза, использовавшаяся для дизайна
👉 Ссылка на доску с задачами и описание взаимодействия
👉 Ссылка на API и краткое описание работы с сетью

#documentation
👍12🔥1
Our 1 Mistake in iOS App Modularization That Slows our Xcode Build process

👉 Не всегда поможет замена MacBook на более мощную версию
👉 Проверяйте процесс сборки. Xcode 14 имеет встроенную функцию визуализации
👉 Иногда проблема медленной сборки более специфична для вашей кодовой базы или даже архитектурного уровня, как это произошло в случае из статьи (UIFramework - bottleneck)
👉 Всегда старайтесь сделать модульную структуру как можно более горизонтальной на каждом уровне, чтобы не создавать узких горлышек в процессе сборки

#build
👍4
KMM глазами iOS-разработчика

В KMM есть свои нюансы, которые описаны в статье. Но нет блокеров, которые заставили задуматься об отказе от KMM. Зато вот какие профиты для бизнеса были получены:
👉 Экономия времени разработки (зависит от проекта). 
Экономия будет больше, если в проектах много бизнес-логики находится на мобильном клиенте: офлайн-first решения
👉 Экономия времени переделок при изменении только бэкенда/логики без изменения UI — почти 50%
👉 Время погружения разработчиков iOS в KMM с 0 до реализации комплексных фичей — около 4 месяцев
👉 Bus factor — доработать KMM-логику могут не только iOS-разработчики, но и Android

#crossplatform
🔥6👍2👎1