Вопрос #5 из State of iOS Toolchain 2022. Что вы используете на сетевом слое своих приложений?
Anonymous Poll
61%
URLSession
15%
Moya
43%
Alamofire
0%
Siesta
0%
Twitter Network Layer
3%
Другую готовую библиотеку
16%
Свою библиотеку
9%
Посмотреть результаты
Если вы привыкли использовать функцию
addSubview
для добавления вьюшек в иерархию, в SwiftUI вам надо будет переучиваться на использование transitions, которые обрабатывают добавление/удаление вьюшек автоматически. Держите подробную статью от objc.io про Transitions в SwiftUI, с хорошими схемами и примерами кода.www.objc.io
Transitions in SwiftUI
Simple but powerful
Хороший гайд по тому, как стать техническим инфлюенсером. Несколько запомнившихся мыслей:
📌Большинство профессионально успешных людей не заметны в онлайне, не стоит верить своему пузырю.
📌Самая полезная метрика – количество людей, которые обращаются к тебе за советом.
📌Выбирайте самые топовые свои материалы и прорабатывайте для них сертезный план дистрибуции. Каналов получения новых читателей очень много.
📌Вы всегда можете присосаться к чужому каналу дистрибуции – например, написав гостевой блогпост (я тоже, если что, с радостью выложу ваши статьи)
📌Большинство профессионально успешных людей не заметны в онлайне, не стоит верить своему пузырю.
📌Самая полезная метрика – количество людей, которые обращаются к тебе за советом.
📌Выбирайте самые топовые свои материалы и прорабатывайте для них сертезный план дистрибуции. Каналов получения новых читателей очень много.
📌Вы всегда можете присосаться к чужому каналу дистрибуции – например, написав гостевой блогпост (я тоже, если что, с радостью выложу ваши статьи)
Lethain
How to be a tech influencer.
In a one-on-one before the holidays, a coworker expressed an interest in being more influential outside of the company and wanted my advice. There’s a similar email I get semi-regularly asking whether folks looking to advance their career should start blogging…
Вопрос #6 из State of iOS Toolchain 2022. Какие кроссплатформенные технологии вы используете?
Anonymous Poll
5%
React Native
11%
Flutter
8%
Kotlin Multiplatform Mobile
9%
C++
2%
Другая технология
65%
Не использую
10%
Посмотреть результаты
Лонгрид выходного дня про историю создания одного из первых массовых домашних компьютеров Commodore 64.
IEEE Spectrum
Creating the Commodore 64: The Engineers’ Story
The daring and design that went into the best-selling computer of all time
Вопрос #7 из State of iOS Toolchain 2022. Как у вас организован Dependency Management?
Anonymous Poll
51%
SPM
8%
Carthage
67%
Cocoapods
10%
Binary frameworks
6%
Copy to sources
3%
Другое решение
1%
Не использую зависимости
7%
Посмотреть результаты
Apple начали рассылать некоторым разработчикам письма с уведомлением о том, что их приложения будут сняты с публикации через 30 дней из-за того, что они не обновлялись продолжительное время. Какой именно срок становится триггером – пока неизвестно, но в примерах говорят про два года.
9to5Mac
Apple now removing outdated apps from the App Store, developers complain - 9to5Mac
Apple is warning developers that it will remove from the App Store apps that haven’t been ”updated in a significant amount of time.”
Когда вам нужно проиграть звук в приложении, самый простой вариант – создать инстанс
AVAudioPlayer
с нужным url и использовать его. Но в большинстве случаев стоит подумать над тем, как проигрываемый звук должен синхронизироваться с контекстом. Например, останавливать музыку в других приложениях, пока ваше проигрывание не закончится. В этом помогает AVAudioSession,
разные режимы работы которого разбираются в этой статье.blog.kulman.sk
Correctly playing audio in iOS applications
When you look for a way to play audio in your iOS application you usually find code like this
player = try AVAudioPlayer(contentsOf: url)
player.prepareToPlay()
player.play()
While this code works and will play the given audio file it does not deal with all…
player = try AVAudioPlayer(contentsOf: url)
player.prepareToPlay()
player.play()
While this code works and will play the given audio file it does not deal with all…
Вдогонку к утренней статье расшифровка доклада Романа Волкова про
AVAudioSession
и распознавание речи, с обходом существующих багов и особенностями работы с этими API.Хабр
Make <your iOS app> talk. Доклад Яндекса
Cтандартные библиотеки распознавания речи и озвучки текста в iOS дают массу возможностей. Из доклада VolkovRoman вы узнаете, как за счёт минимального количества кода научить ваше приложение...
Вопрос #8 из State of iOS Toolchain 2022. Какие архитектурные подходы используете?
Anonymous Poll
32%
MVC
52%
MVVM
25%
VIPER
8%
Redux
5%
TCA
3%
RIBs
18%
CleanSwift
9%
Другое
8%
Не использую универсальных архитектурных решений
11%
Посмотреть результаты
Координаторы устарели. Да здравствуют Навигаторы! Автор статьи описывает свой подход к реализации навигации в приложении: типобезопасный, отделяемый от бизнес-логики, позволяющий легко расширять архитектуру. Если найдете отличия от координаторов, дайте знать.
Medium
Seaworthy mobile applications know how to navigate
Ahoy fellow buccaneers! You might have been in this game a long while or you might just be starting out, whichever rings true, I think we…
Разбор сильных и слабых сторон DocC для сценария публикации сгенерированной документации на GitHub.
Jesse Squires
Using DocC on GitHub Pages
When I first wrote about DocC, I lamented the fact that it was incompatible with static hosting on GitHub Pages. Much has changed since my last post, so let’...
Вопрос #9 из State of iOS Toolchain 2022. Как организован код у вас в проекте?
Anonymous Poll
32%
По слоям
36%
По фичам
30%
По компонентам
21%
Все вперемешку
3%
Другое
15%
Посмотреть результаты
MockingKit – это Swift библиотека для создания удобных динамических моков протоколов и классов. В отличие от моков, создаваемых вручную, в этом случае не придется реализовывать внутреннюю логику руками. Моки автоматически будут записывать, кто и сколько раз к ним обратился, и какую информацию передал.
Environment в SwiftUI работает как словарь, в котором каждому ключу соответствует определенный тип данных. Например,
isEnabled
гарантированно содержит Boolean, а font
– Optional<Font>.
Держите Gist с реализацией аналогичной структуры данных, и статью про особенности ее использования.Gist
Code for my article "A heterogeneous dictionary with strong types in Swift" https://oleb.net/2022/heterogeneous-dictionary/
Code for my article "A heterogeneous dictionary with strong types in Swift" https://oleb.net/2022/heterogeneous-dictionary/ - HeterogeneousDictionary.swift
Вопрос #10 из State of iOS Toolchain 2022. Какие языки вы используете для скриптинга и автоматизации своих задач?
Anonymous Poll
44%
Bash
26%
Python
31%
Ruby
32%
Swift
2%
Kotlin
5%
JavaScript/TypeScript
3%
AppleScript
3%
Другое
16%
Не использую никаких
14%
Посмотреть результаты
Любое приложение, которое делает https запросы, спамит в консоль логами вида
[boringssl] boringssl_metrics_log_metric_block_invoke(151) Failed to log metrics
. Автор статьи раскапывает причину их появления с помощью дизассемблера и находит способ, как их можно заглушить.Хабр
[boringssl] Failed to log metrics
Наверное, каждый iOS разработчик сталкивался с этой проблемой. Любое приложение, которое делает https запросы, получает в лог эти мистические сообщения от boringssl : [boringssl]...
SwiftNIO в ближайшем релизе дропают поддержку CocoaPods, с рекомендацией всем пользователям переходить на SPM. Основная причина – релиз в CocoaPods довольно трудоемкий, требует поддержки кучи podspec и постоянного разбора проблем подов. Кажется, первая ласточка того, что использование библиотеками CocoaPods будет постепенно снижаться.
Swift Forums
SwiftNIO is dropping support for CocoaPods
Hi NIO users, The next set of NIO releases will be the final set for which we publish CocoaPods. The final version of each package supporting CocoaPods will be: SwiftNIO 2.40.0 SwiftNIO HTTP/2 1.21.0 SwiftNIO SSL 2.19.0 SwiftNIO Transport Services 1.12.0…
Вопрос #11 из State of iOS Toolchain 2022. Какие Proxy клиенты вы используете?
Anonymous Poll
51%
Charles
28%
Proxyman
5%
Другое
21%
Не использую
9%
Посмотреть результаты
Интересный кейс поэтапной проработки архитектуры SwiftUI приложения со сложным лэйаутом из нескольких таблиц, данные которых зависят друг от друга.
Medium
SwiftUI Case Study: Data modelling of Brotherhood Alchemist
SwiftUI is relatively new and many of us in the iOS development community are still adapting to this declarative language. There are many…