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

Новости Kotlin и мультиплатформы @kotlin_broadcast
Новости Android @android_broadcast
Реклама и прочее @android_broadcast_bot
Download Telegram
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
Давайте знакомиться! Меня зовут Розалия Амирова и уже несколько месяцев я веду @ios_broadcast (возможно вы видели мое имя в подписи к постам) 

В iOS разработке 4 года, прошла путь от стажера до ведущего разработчика. Работаю в Тинькофф.Бизнес, а еще являюсь лидером профессии в компании. Иногда выступаю, менторю коллег, развиваю сообщество и делюсь новостями по iOS разработке.

Живу в Иннополисе уже 6 лет. Увлечений много, например, спорт, в особенности горные лыжи, путешествия, настолки, гитара.
🔥58👏8👍5🤩4👎2
Собеседование iOS разработчика: вопросы и задания

В статье ответы на самые популярные вопросы, которые задают на интервью
👉 Что такое optional? Какие способы развернуть optional вы знаете?
👉 Что работает быстрее — поиск по NSArray или NSSet?
👉 Многопоточность - что такое GCD и когда надо использовать Dispatch Groups?
👉 Отличия frame и bounds
👉 Паттерны программирования
👉 Отличия структуры от класса
👉 Виды ссылок
👉 Жизненный цикл приложения
👉 Жизненный цикл ViewController

#interview
👍13👎3
Стоит ли переходить с UIKit на SwiftUI? Опыт СберМаркета

👉 Если вы собираетесь писать новый проект, то автор рекомендует этот фреймворк
👉 Если это старый проект, то можно переписать некоторые компоненты на UIKit, вынося их, для начала, в отдельные ViewController’ы, и добавляя с помощью addSubview в родительский VC, а после уже полностью переписывать на SUI и оборачивать в UIHostingController.

Сам по себе SwiftUI не страшен, но есть ещё неизведанные территории и редкие баги, с которыми можно справиться, если внимательно читать документацию. По скорости разработки SwiftUI по большей части обходит UIKit, хотя сначала нужно набить руку и познакомиться с фреймворком. 

#ui
👍13👎6
А сегодня мы слушаем доклады, общаемся и вырываемся из рутины на Mobius
Небольшая хроника в Instagram @ro_am @krl_rzv
🔥10👎2👍1😁1
Декларативный UI: определение, история и необходимость

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

#paradigms
👍8👎1
Регистрация аккаунта разработчика в Apple: что может пойти не так

История одной регистрации в Apple Developer Program, которая вместо двух недель затянулась на 3 месяца.

Бизнес-аналитик, который работал с этими задачами, дает пару практических советов:
👉 Получать D-U-N-S (ID компании для регистрации) лучше сразу через Apple
👉 Будет эффективнее не писать обращения в Apple, а заказывать обратные звонки. В телефонном разговоре проще решать все вопросы здесь и сейчас, а не ждать каждый раз ответа несколько дней

#apple
👍3👎1
Speech Synthesis: Text To Speech in SwiftUI

Apple предоставляет библиотеку для синтеза речи во фреймворке AVFoundation. Реализовать можно с помощью двух классов AVSpeechUtterance and AVSpeechSynthesizer. Довольно просто 😎

#swift
👍17👎2
Window management in SwiftUI

В текущей итерации SwiftUI значительным изменением стало добавление API для управления окнами. Что нового:
👉 Поддержка нескольких окон проверяется с помощью переменной окружения @Environment(\.supportsMultipleWindows)
👉 Создание новое окно с помощью Window
👉 Создание группы с помощью WindowGroup
👉 Модицифицирование стиля с помощью windowStyle
👉 Создание menu bar app

#swiftUI
👍7👎1
What is a Tuple in Swift?

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

Что важно помнить:
👉 Empty tuple - () или всем знакомый Void
👉 Tuple как Type alias: typealias PersonTuple = (String, Int)
👉  Tuple - типы значений, а значит при переприсвании они копируются
👉 Количество элементов в tuple можно узнать так: Mirror(reflecting: tuple).children.count

#swift
🔥5👎1