Forwarded from Kotlin Multiplatform Broadcast (Кирилл Розов)
TouchLab представили KMMBridge - набор Gradle инструментов для помощи в публикации и использования pre-build KMM Xcode Framework бинарников
👉 Документация
👉 Исходный код на GitHub
#kmm #gradle
👉 Документация
👉 Исходный код на GitHub
#kmm #gradle
👍3
Developer guide on the iOS file system
В целях безопасности для записи и чтения файлов каждое iOS приложение имеет свою изолированную sandbox директорию. В качестве исключения доступны фото, музыка, контакты и некоторые другие данные.
Sandbox состоит из:
👉 Bundle Container Directory - содержит ресурсы приложения (доступ read-only)
👉 Data Container Directory, делится на:
- Documents: контент, сгенерированный пользователем
- Library - для хранения фалов приложения, которые не должны просочиться пользователю
- tmp - для временных файлов
#iOS
В целях безопасности для записи и чтения файлов каждое iOS приложение имеет свою изолированную sandbox директорию. В качестве исключения доступны фото, музыка, контакты и некоторые другие данные.
Sandbox состоит из:
👉 Bundle Container Directory - содержит ресурсы приложения (доступ read-only)
👉 Data Container Directory, делится на:
- Documents: контент, сгенерированный пользователем
- Library - для хранения фалов приложения, которые не должны просочиться пользователю
- tmp - для временных файлов
#iOS
🔥3
Известность команд iOS разработки 2022
В опросе среди 900 iOS разработчиков узнали много интересного. Некоторые пойнты из исследования:
👉 57% респондентов работают в командах из 10 и более человек
👉 78.7% iOS разработчиков имеют высшее образование
👉 Джуны смотрят видео на YouTube, читают книги и проходят курсы. С переходом в мидлы фокус сдвигается на статьи и общение с коллегами. Синьорство прививает вкус к Твиттеру
и email-рассылкам. А тимлиды предпочитают ходить на конференции и чаще общаться с коллегами
👉 Наиболее привлекательные компании: Яндекс, Тинькофф и Авито
#оффтоп
В опросе среди 900 iOS разработчиков узнали много интересного. Некоторые пойнты из исследования:
👉 57% респондентов работают в командах из 10 и более человек
👉 78.7% iOS разработчиков имеют высшее образование
👉 Джуны смотрят видео на YouTube, читают книги и проходят курсы. С переходом в мидлы фокус сдвигается на статьи и общение с коллегами. Синьорство прививает вкус к Твиттеру
и email-рассылкам. А тимлиды предпочитают ходить на конференции и чаще общаться с коллегами
👉 Наиболее привлекательные компании: Яндекс, Тинькофф и Авито
#оффтоп
👍4🤩1
Использование Apple Swift и SwiftUI в iOS 16
Занятные графики об использовании бинарников, UIKit и SwiftUI, языков программирования в iOS.
Принятие Swift продолжает экспоненциальный рост и в этом году язык превзошел C++. Точно так же SwiftUI начинает все больше использоваться самой Apple: количество двоичных файлов, использующих SwiftUI, удвоилось от iOS 15 к iOS 16. Apple использует собственные платформы — хороший знак для этих фреймворков.
#iOS
Занятные графики об использовании бинарников, UIKit и SwiftUI, языков программирования в iOS.
Принятие Swift продолжает экспоненциальный рост и в этом году язык превзошел C++. Точно так же SwiftUI начинает все больше использоваться самой Apple: количество двоичных файлов, использующих SwiftUI, удвоилось от iOS 15 к iOS 16. Apple использует собственные платформы — хороший знак для этих фреймворков.
#iOS
🔥4👎1
Алгоритмы сортировки в Swift
Каков наиболее эффективный способ отсортировать миллион 32-битных пользователей? Это частый вопрос на собеседовании в таких компаниях как Google.
В статье три популярных алгоритма сортировки с кодом на Swift и видеопримерами.
#swift
Каков наиболее эффективный способ отсортировать миллион 32-битных пользователей? Это частый вопрос на собеседовании в таких компаниях как Google.
В статье три популярных алгоритма сортировки с кодом на Swift и видеопримерами.
#swift
👍3👎2
Утройсво многопоточности в Swift
Для нас доступны следующие способы работы с потоками:
👉 pthread - самый низкий уровень, не рекомендуется к использованию
👉 NSThread - абстракция над pthread
👉 Grand Central Dispatch - высокоуровневое API, позволяющее создавать пользовательские очереди, управлять задачами в них, решать вопросы синхронизации и делать это максимально эффективно
👉 NSOperation - это по сути те же очереди, вместо DispatchQueue здесь OperationQueue, а вместо DispatchWorkItem — Operation
Подробнее о каждом из способов, а также о проблемах многопоточности в статье
#swift
Для нас доступны следующие способы работы с потоками:
👉 pthread - самый низкий уровень, не рекомендуется к использованию
👉 NSThread - абстракция над pthread
👉 Grand Central Dispatch - высокоуровневое API, позволяющее создавать пользовательские очереди, управлять задачами в них, решать вопросы синхронизации и делать это максимально эффективно
👉 NSOperation - это по сути те же очереди, вместо DispatchQueue здесь OperationQueue, а вместо DispatchWorkItem — Operation
Подробнее о каждом из способов, а также о проблемах многопоточности в статье
#swift
🔥3👍1
The View Controller Hierarchy
Если вы забыли как строятся отношения между контроллерами внутри приложения, то эта статья от Apple поможет восполнить пробелы
Основные типы контроллеров:
👉 The Root View Controller - головной контроллер, с которого начинаются все флоу в приложении. Каждый UIWnidow имеет ровно один такой контроллер❗️
👉 Container View Controller - позволяет собирать сложные интерфейсы из более управляемых и многократно используемых частей. Например, UINavigationController
👉 Presented View Controllers - экран, открытый поверх другого
#navigation
Если вы забыли как строятся отношения между контроллерами внутри приложения, то эта статья от Apple поможет восполнить пробелы
Основные типы контроллеров:
👉 The Root View Controller - головной контроллер, с которого начинаются все флоу в приложении. Каждый UIWnidow имеет ровно один такой контроллер❗️
👉 Container View Controller - позволяет собирать сложные интерфейсы из более управляемых и многократно используемых частей. Например, UINavigationController
👉 Presented View Controllers - экран, открытый поверх другого
#navigation
🔥2👎1
6 YouTube channels that every iOS developer should subscribe
Очередной повод выучить или подтянуть английский:
👉 Paul Hudson - канал автора сайта Hacking with Swift с обучающими видео
👉 Darrel Root - обучающие видео по Swift
👉 iOS Conf SG - ежегодная конференция iOS разработчиков в Сингапуре
👉 CodeWithChris - самый большой канал с iOS туториалами на YouTube (из био канала)
👉 Lets Build That App - канал, где переписывают популярные приложения из AppStore
👉 Sean Allen - туториалы по iOS и оффтопные shorts
#education
Очередной повод выучить или подтянуть английский:
👉 Paul Hudson - канал автора сайта Hacking with Swift с обучающими видео
👉 Darrel Root - обучающие видео по Swift
👉 iOS Conf SG - ежегодная конференция iOS разработчиков в Сингапуре
👉 CodeWithChris - самый большой канал с iOS туториалами на YouTube (из био канала)
👉 Lets Build That App - канал, где переписывают популярные приложения из AppStore
👉 Sean Allen - туториалы по iOS и оффтопные shorts
#education
🔥4👎1
Is Swift Combine Dead?
Есть мнение, что Combine умер, поскольку Apple представила Swift Concurrency, а Combine получает лишь минорные апдейты. Авторы статьи считают, что это не так, и у Combine есть плюсы:
👉 не пропустите обновления данных из-за того, что забыли присвоить где-то делегат
👉 легче оперировать над потоком данных (убирать дубликаты, объединять значения и т.д.)
👉 можно иметь больше одного подписчика
В чем Combine плох? В интеграции с другими решениями. Например, со Swift Concurrency. Но каждый инструмент хорош для своих задач. А в статье примеры для каких 🙂
#swift
Есть мнение, что Combine умер, поскольку Apple представила Swift Concurrency, а Combine получает лишь минорные апдейты. Авторы статьи считают, что это не так, и у Combine есть плюсы:
👉 не пропустите обновления данных из-за того, что забыли присвоить где-то делегат
👉 легче оперировать над потоком данных (убирать дубликаты, объединять значения и т.д.)
👉 можно иметь больше одного подписчика
В чем Combine плох? В интеграции с другими решениями. Например, со Swift Concurrency. Но каждый инструмент хорош для своих задач. А в статье примеры для каких 🙂
#swift
👍3👎1
Исключения из принципа YAGNI
👉 Всё, что относится к правилу «ноль, один, бесконечность». Если в требованиях пункт «нам нужно сохранять адрес пользователя» превращается в «нам нужно сохранять два адреса», скорее всего лучше сразу обеспечить возможность сохранять много адресов
👉 Управление версиями. Не помешает заранее задуматься о том, как, допустим, система клиент – сервер будет распознавать разные версии и реагировать на них
👉 Логирование. Особенно в тех случаях, когда баги устраняются постфактум или в сложновоспроизводимых ситуациях
👉 Временные метки. Например, время создания или перехода в какое-либо состояние
👉 Реляционные базы данных. Большая часть данных реляционна по своей природе, поэтому нереляционная база – плохой выбор по умолчанию практически для любого приложения
#architecture
👉 Всё, что относится к правилу «ноль, один, бесконечность». Если в требованиях пункт «нам нужно сохранять адрес пользователя» превращается в «нам нужно сохранять два адреса», скорее всего лучше сразу обеспечить возможность сохранять много адресов
👉 Управление версиями. Не помешает заранее задуматься о том, как, допустим, система клиент – сервер будет распознавать разные версии и реагировать на них
👉 Логирование. Особенно в тех случаях, когда баги устраняются постфактум или в сложновоспроизводимых ситуациях
👉 Временные метки. Например, время создания или перехода в какое-либо состояние
👉 Реляционные базы данных. Большая часть данных реляционна по своей природе, поэтому нереляционная база – плохой выбор по умолчанию практически для любого приложения
#architecture
👍3👎2
iOS 16.1 Что нового? Apple выполняет обещания 25 октября
Основные обновления:
👉 Live Activity — интерактивные push-уведомления на экране блокировки.
👉 Можно удалить Apple кошелек
👉 Индикатор процента заряда батареи
👉 Загрузка контента в приложении перед первым запуском приложений. Приложения смогут работать в фоновом режиме для загрузки контента еще до первого запуска
👉 Общая библиотека фотографий iCloud. Это отдельная медиатека, которой могут поделиться до пяти пользователей
#iOS
Основные обновления:
👉 Live Activity — интерактивные push-уведомления на экране блокировки.
👉 Можно удалить Apple кошелек
👉 Индикатор процента заряда батареи
👉 Загрузка контента в приложении перед первым запуском приложений. Приложения смогут работать в фоновом режиме для загрузки контента еще до первого запуска
👉 Общая библиотека фотографий iCloud. Это отдельная медиатека, которой могут поделиться до пяти пользователей
#iOS
🔥3👍1👎1
iOS: Навигация по-новому
По мере развития SwiftUI основной компонент навигации NavigationView был заменен на NavigationStack.
В чем суть: теперь навигация становится возможной даже при помощи передачи пути для навигации. Те кто пользовался DeepLink или UniversalLink возрадуются. Теперь и на их улице будет праздник.
Вся навигация сводится к передаче массива с условными названиями экранов в переменную пути. NavigarionStack пройдет все цепочку навигации автоматически, и покажет последний экран в цепочке.
#ui
По мере развития SwiftUI основной компонент навигации NavigationView был заменен на NavigationStack.
В чем суть: теперь навигация становится возможной даже при помощи передачи пути для навигации. Те кто пользовался DeepLink или UniversalLink возрадуются. Теперь и на их улице будет праздник.
Вся навигация сводится к передаче массива с условными названиями экранов в переменную пути. NavigarionStack пройдет все цепочку навигации автоматически, и покажет последний экран в цепочке.
#ui
👍8👎2
Protocol Oriented Programming in Swift (4 мин)
Плюсы использования протоколов:
👉 Типы могут соответствовать и получать поведение по умолчанию от более, чем одного протокола (в отличие от наследования)
👉 Протоколам могут соответствовать классы, структуры и перечисления, в то время как наследоваться могут только классы
👉 Протоколы позволяют реализовать retroactive modeling благодаря расширениям
Когда они полезны?
👉 Для написания юнит тестов. Вы можете с лёгкостью подменить реализацию
👉 Протоколы позволяют скрыть типы пользовательских сценариев от view controller'ов, либо от любых других объектов
#architecture
Плюсы использования протоколов:
👉 Типы могут соответствовать и получать поведение по умолчанию от более, чем одного протокола (в отличие от наследования)
👉 Протоколам могут соответствовать классы, структуры и перечисления, в то время как наследоваться могут только классы
👉 Протоколы позволяют реализовать retroactive modeling благодаря расширениям
Когда они полезны?
👉 Для написания юнит тестов. Вы можете с лёгкостью подменить реализацию
👉 Протоколы позволяют скрыть типы пользовательских сценариев от view controller'ов, либо от любых других объектов
#architecture
🔥4👎3
Для чего нужна Witness Table?
Anonymous Quiz
11%
Для реализации Direct Dispatch
24%
Для Table Dispatch при наследовании
56%
Для Table Dispatch при реализации протоколов
9%
Для Message Dispatch
👍4👎3