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

Новости Kotlin и мультиплатформы @kotlin_broadcast
Новости Android @android_broadcast
Реклама и прочее @android_broadcast_bot
Download Telegram
Какими средствами дебагинга в Xcode вы пользуетесь?
Anonymous Poll
80%
print
73%
breakponts (обычные)
29%
memory graph
50%
view hierarchy
32%
breakpoints (с опциями)
🔥4👎2
Собеседование наоборот: Авито, билайн, Домклик, Мегафон

Ответы на вопросы про составление резюме, системы грейдов, процессы, технологии и тренды от представителей крупных компаний

#карьера
👍4👎2
Как локализовать приложение

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

#Xcode #tools
👍3👎1
Codeface: визуализация кодовой базы

Codeface позволяет:
👉 Просматривать иерархию кода
👉 Просматривать основные зависимости между структурными элементами на каждом уровне: папками, файлами и кодовыми символами
👉 Смотреть циклические зависимости и где они находятся
👉 Смотреть размер (строк кода) каждого структурного элемента
👉 Проверять scope на всех уровнях — от папок до свойств
👉 Фильтровать все визуализации по поисковому запросу
👉 Сохранять, открывать и делиться файлами кодовой базы
👉 Добавлять поддержку языков помимо Swift при наличие LSP-сервера

Ссылка в AppStore


#tools
👍7👎4
A New Approach to StateFul MVVM

StateFul MVVM добавляет новые сущности к MVVM - coordinator и state:
👉 Coordinator инкапсулирует логику навигации. Вместо push и present ViewController'ов друга, все в координаторе.
👉 State: Domain State Container ответственен за координацию других сущностей (например network service) для реализации бизнес логики и side effect'ов. Обычно он задает новое состояние как результат side effect'а.

Пример реализации в статье и GitHub

#architecture
👍2👎1🔥1
Рисуй, чтобы победить

Скрайбинг и скетчноутинг - непонятные заморские слова, но за ними кроется простая техника визуальных заметок. Этому даже специально учат. Но любому человеку под силу за 10 минут научиться базовым техникам.
Автор делится примерами рисования базовых компонентов, ситуациями из жизни, в которых это может быть полезно, а также литературой по теме

#оффтоп
🔥4👎1
iOS: Simplifying Dependency Injection with the Facade Design Pattern

Как с умом сочетать паттерны Facade и Dependency Injection, чтобы получить силу обоих, читайте в статье. С помощью протоколов делим Facade на несколько типов, чтобы использовать в классах только нужное, а в тестах это мокировать.

#patterns
3👎2👍1
Swift Parallel Programming With PromiseKit (2 мин)

С помощью PromiseKit можно связать несколько вызовов в цепочку, что позволит написать более читаемый и компактный код, чем с помощью closures. Если по тем или иным причинам Combine вам не подходит, можно посмотреть в сторону PromiseKit

#concurrency
👍3👎3
Preparing for the Swift Interview (1.0) (3 мин)

Разбор некоторых популярных тем с собеседований:
👉 Protocols (множественное соответствие, наследование, расширения)
👉 Generics (функции, классы)
👉 Closures (параметры, trailing, (non-)escaping)

#interview
👍5👎3
Retain Cycle in Swift (6 мин)

Еще раз про Retain Cycle, ARC, виды ссылок (strong, weak, unowned) с примерами как на картинке 😄

#memory
👍5👎1
Evolving SwiftUI Architecture for Client-Server Apps (5 мин)

В статье еще один способ организовать NetworkLayer в SwiftUI приложении и реализовать:
👉 Кеширование
👉 Сортировку
👉 Поиск

#swiftUI
👍3👎2
Integrating SwiftUI into UIKit project (6 мин)

В этой статье подробно описано как интегрировать SwiftUI в уже существующее приложение:
1️⃣ Используем дженерик протокол - UIHostingController, который обернет SwiftUI вьюшку
2️⃣ Создаем класс, который унаследуют протокол
3️⃣ Используем получившийся класс для навигации, как обычный UIVIewController

#swiftUI
👍6👎1
My Personal Takes from Using Combine (3 мин)

Плюсы Combine:
👉 Interfaces - соединяем потоки данных напрямую с UI компонентами, минуя делегаты, замыкания и вызовы функций
👉 The Async Challenge - асинхронное программирование считается челенджовым. Автор пишет, что подключение потоков данных напрямую к UI - значительное преимущество
👉 SwiftUI отлично сочетается с Combine

#reactive
👍3👎1
Understanding Swift Compiler (3 мин)

Как работает компилятор Swift по фазам преобразования в машинный код:
👉 Парсинг. Исходный код парсится в токены и помещается в абстрактное синтаксическое дерево (AST). Выводятся ошибки и предупреждения с указанием места проблемы в коде
👉 Семантический анализ - проверка типов данных
👉 Clang Import. Модули Clang импортируются и мапят C или Objective-C API в Swift API.
👉 SILGen (Swift Intermediate Language). Происходит оптимизация Swift кода. AST превращается в RAW SIL
👉 SIL Guaranteed Transformations. Проверка потоков данных (например, использование неинициализированных переменных). Результат - Canonical SIL
👉 SIL оптимизатор - специфичные для Swift оптимизации. Например, применение dispatch rules и специализация generic
👉 LLVM IR генератор. SIL превращается LLVL’s intermediate representation (IR), которое уже не специфично для Swift
👉 LLVM. IR оптимизируется и превращается в машинные инструкции для целевых платформ

#swift
👍5👎1
Ничего не умею, но хочу зарабатывать на играх

Автор изучал способы монетизации игр, пробовал интегрировать рекламу, подписку, in-appы и все, что могло мотивировать игроков потратить свои деньги и принести доход, параллельно работая над своими проектами и над проектами компании, в которой был геймдизайнером и решил поделиться с нами опытом в статье.

#оффтоп
👍2👎1🤩1
Как я подключил Sign in with Apple — Apple авторизацию. Подробный гайд

Гайд по реализации Sign in with Apple:
👉 Добавляем import AuthenticationServices
👉 Создаем кнопку и накидываем на нее таргет
👉 Создаем экземпляр ASAuthorizationAppleIDProvider и request с помощью метода createRequest() экземпляра
👉 Создаем ASAuthorizationController, в инит закидываем request из прошлого шага
👉 Реализовываем методы делегата как на скрине

#swift
👍2👎1
Result builders in Swift explained with code examples

Что таке Result builder?
🏗 Result builder'ы позволяют создавать результат с помощью "строительных блоков", выстроенных друг за другом. Например, когда верстаете с помощью SwiftUI, создавая вьюшку за вьшкой внутри body

В статье подробно описано, как и когда стоит создавать свой кастомный builder:
👉 Как? Создайте кастомную структуру, добавьте аннотацию @resultBuilder и переопределите нужные вам методы - готово 🔥
👉 Когда? Всякий раз, когда вы видите кусок кода, который построен из нескольких условных элементов и превращен в один общий элемент типа return, вы можете подумать о написании Result builder'a. Однако делайте это только в том случае, если вы знаете, что вам придется писать их чаще

#swift
👍3👎1
How to change Status Bar text color in iOS (2 мин)

Два способа поменять цвет текста в статус баре:
👉 Для всего приложения: в Info.plist добавить ключ "Status bar style" и задать значение "Light Content" или "Dark Content", затем добавить ключ "View controller-based status bar appearance" и установить значение "NO"

👉 Для отдельного view controller'а с помощью
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
При этом в info.plist установить значение ключа "View controller-based status bar appearance" в YES или убрать ключ.

#ui
👍6👎1
Как построить большое мобильное приложение в проекте… который был уже несколько раз потрачен до тебя

Основные выводы статьи:
👉 Не надо торопиться все переделывать, критиковать и пытаться сделать “как в больших современных компаниях”. Специалисты, которые работали до тебя, скорее всего чем-то руководствовались. Нужно уметь почерпнуть опыт предшественников.
👉 Лучше всего делать постепенный фейслифтинг и рефакторинг, делать промежуточные архитектуры, с которых можно будет с меньшими усилиям переехать на целевые
👉 У продуктовых команд должен быть выбор, какие платформенные инструменты им использовать для достижения своих целей
👉 Чаще лучше обещать меньше, но выполнить и быть героем, чем наообещать и сделать тот же самый объем

#management
👍6👎1