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

Новости Kotlin и мультиплатформы @kotlin_broadcast
Новости Android @android_broadcast
Реклама и прочее @android_broadcast_bot
Download Telegram
По случаю пятницы обзор статей о "токсичной продуктивности" в мире IT.

👉 Обязан ли разработчик развиваться? Популярно мнение, что разработчик обязан иметь блогпет проект и выучить 10 языков программирования. Синдром самозванца и выгорание стали основой индустрии.
Вы не обязаны развиваться. Учиться, развиваться нужно вдумчиво и постепенно — умеренность защитит вашу психику и приведёт к лучшим результатам. Если вы уже выгорели — прекратите заниматься развитием и потратьте свои ресурсы на восстановление. 

👉 Разработчики: не перерабатывайте. Люди, которые работают сверхурочно, — идеалисты. Они верят в систему. Оппортунисты, которые заполняют пробелы в способности компании зарабатывать деньги, в конечном итоге получают более высокие зарплаты и карьерный рост.

👉 Правило 3-х часов: Сколько нужно работать в день. Автор предлагает выделять 3 часа концентрации и внимания на работу, как ключ к победе над выгоранием

#softskills
🔥6👍1
Пишем библиотеку для запроса оценки в AppStore

В продвижении приложения очень важную роль играет рейтинг приложения в AppStore. Показ запроса на оценку возможен только три раза в год, при условии что изменилась версия приложения и пользователь не отключил запрос оценки в настройках iOS.
Поэтому очень важно не потратить заветные три попытки впустую. В статье детали реализации модуля для удобного отображения запроса на оценку: ссылка на GitHub

#tools #appStore
👍4👎1
Логи в iOS, эпизод 1: os_log

Console.app - специальное приложение для логов, встроенное в MacOS. Для поиска логов по приложению, в правом верхнем углу введите название приложения. В фильтрах указываем Library, тип матчинга Equals.
В Console.app не будут попадать принты. Их нужно заменить на os_log(), с уровнем логгирования, отличным от .debug. По уровню также можно настраивать фильтры. На скрине пример логирования с указанием модуля, файла и строчки.

#tools
👍3👎1
WebView: забыть нельзя интегрировать

При разработке мобильного приложения iOS или Android рано или поздно может встать вопрос: «Реализовать фичу на WebView или же нативно?». 

Плюсы:
👉 Сокращение общих затрат на разработку и TTM
👉 Синхронный Update на пользователей
👉 Возможности для команд без нативных разработчиков

Минусов довольно много, вот некоторые из них:
👉 Нет офлайн режима и продолжительность загрузки
👉 Проблемы с локальным хранением данных и работой в фоне
👉 Неконсистентность дизайна, проблемы с UI и навигацией
👉 Проблемы интеграции, версионирования, UI-тестирования


Когда использование WebView может быть уместно
👉 MVP и эксперимент
👉 Техническая невозможность реализовать иначе
👉 Фича максимально обособлена
👉 Простая задача

#разработка
👍3👎1
How to create Rounded Corners Button in UIKit

В iOS 15, появились новые способы задать скругления кнопки через UIButton.Configuration:
👉 Через встроенный стиль со скругленными углами UIButton.Configuration.filled()
👉 Если дефолтное скругление не устраивает, можно задать cornerStyle у UIButton.Configuration (примеры на скрине)
👉 Если нужно задать определенное значение скругления, используйте configuration.background.cornerRadius, а затем установите configuration.cornerStyle в .fixed

#UI
👎3👍2
How to check if String is Number in Swift

Способы проверить, что строка является числом:

👉 Символы 0-9 через CharacterSet(charactersIn: self).isSubset(of: digitsCharacters), либо регулярку "^[0-9]*$"
👉 Больше символов: (๑๒๓, например) CharacterSet(charactersIn: "искомая строка").isSubset(of: CharacterSet.decimalDigits)
👉 Еще больше символов ("⅚", "㊈"): "искомая строка".allSatisfy { character in character.isNumber }

#swift
👎4🔥2
Replacing if let in Swift 5.7

В Swift 5.7 был упрощен синтаксис выражений if let и guard let. Теперь так:
var name: String? = "Linda"
if let name {
print("Hello, \(name)!")
}
В статье регулярка для быстрого рефакторинга

#swift
👍5👎2
Build Time Optimizations (Xcode)

Авторы статьи смогли сократить время билда на 21%. Приведем их советы по оптимизации кода:
1. Используйте "let", где возможно
2. Добавляйте final к классам
3. Явно объявляйте тип и избейгайте инициалзации через вызов .init 
4. Делайте extension'ы приватными
5. Используете объявление кейсов перечислений с типом
6. Разбивайте сложные выражения на части
7. Избегайте лишних кастингов
8. Предпочтитайте if let вместо разворачивания через ??

#optimization
👍7👎1
Integrate SwiftLint to the iOS project

Чтобы добавить SwiftLint к себе в проект нужно всего лишь...

👉 Добавить в Podfile: pod 'SwiftLint'
👉
Build Phases (Linting): ${PODS_ROOT}/SwiftLint/swiftlint
👉
Добавить правила в .swiftlint.yml

#tools
😁5👎1🤩1
«Счастье разработчиков 2022» — отчет ZenHub

Опрос 380 англоговорящих разработчиков из разных стран показал:
👉 Наиболее приоритетны для команд разработчиков — бизнес-цели
👉 Вызовы в ежедневном программировании — безопасность, быстродействие и уменьшение технического долга
👉 Только 8% работает над одним проектом, большинство работает более 40 часов в неделю
👉 В компании важны баланс работа/личная жизнь, качество проектов и размер зарплаты
👉 Наибольшее помехи продуктивности — меняющиеся требования, ожидание обратной связи и неясные сроки сдачи проектов.

#оффтоп
👍3👎2
Работа в мобильной разработке 2022 — опрос RayWenderlich.com

Всего в опросе приняло участие 1,257 человек. Вот некоторые его интересные результаты:
👉 Зарплата на карте — зеленое больше, красное меньше
👉 56% разработчиков создает собственные приложения в свободное время
👉 Доходы пет-проектов на 2 изображении
👉 Зарплата по языкам программирования — традиционно Objective-C лидирует, а на втором месте C++

#оффтоп
👍4👎1
Discover the MVVM Architecture in less than 90 seconds

Статья и видео с быстрым объяснением основной сути MVVM

#architecture
🔥5👎1
Forwarded from Kotlin Multiplatform Broadcast (Кирилл Розов)
🎉 Kotlin Multiplatform Mobile (KMM) вышел в Beta

Что значит Beta для KMM:
👉 Технология практически готова и ее безопаснос использовать
👉 Количество изменение, требующих миграции, будет минимизровано и авторы стараются такого не допускать

Время пробовать и интегрировать технологию, ведь она уже много где есть в продакшене!
👎3🔥2👍1
Логи в iOS, эпизод 2: os_signpost

Связка os_signpost и Time Profiler — мощный инструмент. Вы можете замерить сколько времени у вас выполнялась те или иные расчёты, сколько раз вы сходили в сеть, а также узнать, какая модель данных дольше всего парсилась

#tools
👍3👎1
Drag & Drop in SwiftUI (iOS 15)

Реализовываем drag-and-drop на SwiftUI

onDrag(_:preview:) - задает источник, параметры:
👉 data - closure, который возвращает NSItemProvider, который определяет перетаскиваемые данные
👉 preview - размещается по центру перетаскиваемого объекта после начала операции, опционально

onDrop(of:delegate:) - задает приемник, параметры:
👉 supportedConentType - определяет тип данных, которые можно принимать
👉 delegate - соответствует протоколу DropDelegate и определяет поведение drop

#swiftUI
👍3👎1
The Problems with Singletons and Why You Should Use DI Instead (10 мин)

Основные проблемы синглтонов:
👉 Синглтоны глобальные
👉 Вы не можете кастомизировать инициализацию
👉 Невозможно подменить зависимости
Подробнее о проблемах и способах решения в статье

#architecture
👍3
Вы не самозванец — все разработчики притворяются

Мы все просто придумываем решения
👉 Невозможно подделать код
Вы не можете подделать технические навыки, когда дело доходит до того, чтобы компьютер делал то, что нужно
👉 Библия разработчика
Когда senior сталкивается с новой проблемой, он не знает решение. Он придумывает ответ на ходу!
Вот что делает разработку программного обеспечения такой интересной и творческой областью. Мы творчески ищем решения новых задач.
👉 Ценность ошибок
Лучшие старшие разработчики — это те, кто видел больше всего ошибок
👉 Больше не самозванец
Не существует единственно правильного способа быть разработчиком. Отпустите себя. Не чувствуйте себя обязанным быть героем. Вы отлично справляетесь прямо сейчас

#оффтоп
🔥8👎1