Show progress of the task using SwiftUI ProgressView
Реализация ProgressView на SwiftUI в виде полосы и круга
#swiftUI
Реализация ProgressView на SwiftUI в виде полосы и круга
#swiftUI
👍4👎1
Use a Base Class or a Protocol In Swift? (3 мин)
Когда мы определяем протокол, можно определить лишь необходимое поведение объектов, что защищает нас ненужных возможностей, которые может иметь базовый класс
Так что же использовать?
Как это часто бывает, ответ: "it depends". Посмотрите на примеры и подумайте, что лучше подойдет в вашей ситуации. В Swift всего это будут протоколы 😄
#swift
Когда мы определяем протокол, можно определить лишь необходимое поведение объектов, что защищает нас ненужных возможностей, которые может иметь базовый класс
Так что же использовать?
Как это часто бывает, ответ: "it depends". Посмотрите на примеры и подумайте, что лучше подойдет в вашей ситуации. В Swift всего это будут протоколы 😄
#swift
👍1😁1
Создание анимаций для навигации в iOS
Можно использовать UIViewControllerAnimatedTransitioning для переходов в
В статье подробно описан первый случай
#UI
Можно использовать UIViewControllerAnimatedTransitioning для переходов в
UINavigationController
, для переходов посредством present
и dismiss
контроллеров, а даже для переходов между экранами UITabBarController
. В статье подробно описан первый случай
#UI
🔥2👍1👎1
Introducing Ask Apple
Анонсирована серия консультация для разработчиков от экспертов из Apple. Первый раунд пройдет с 17 по 21 октября.
Участники смогут пообщаться с экспертами в Slack. Фокус будет на оптимизации под новые платформы и устройства, начиная от поддержки новых фичей, заканчивая миграцией на Swift и SwiftUI. Также в рамках "Office hours" можно будет запросить 25-минутную консультацию.
#Apple
Анонсирована серия консультация для разработчиков от экспертов из Apple. Первый раунд пройдет с 17 по 21 октября.
Участники смогут пообщаться с экспертами в Slack. Фокус будет на оптимизации под новые платформы и устройства, начиная от поддержки новых фичей, заканчивая миграцией на Swift и SwiftUI. Также в рамках "Office hours" можно будет запросить 25-минутную консультацию.
#Apple
👍3👎1
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