iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT
12.4K subscribers
654 photos
64 videos
3.95K links
Самые интересные статьи, видео и новости, связанные с iOS разработкой. Не больше трёх материалов в день.

Лучшее iOS сообщество в Телеге: @iosgt

Размещение рекламы: @tanyasanovna
Download Telegram
Очень интересный тред на Reddit про то, действительно ли функциональные программы или языки по определению более медленные, или все дело в неэффективности современных языков. Все сводится к тому, что производительность – понятие растяжимое, функциональность – тоже. Но в самих комментариях много ценных идей и ссылок.
https://www.reddit.com/r/ProgrammingLanguages/comments/rsce6j/why_are_imperative_programs_considered_faster
В Kotlin есть классная фича – scope functions. Это функции, выполняющие блок кода в контексте определенного объекта с захватыванием его. Вот простой пример:

val adam = Person("Adam").apply {
age = 20
city = "London"
}

В статье рассказывается, почему в Swift такую же штуку реализовать не так просто, и как эти ограничения можно обойти.
https://alejandromp.com/blog/fluent-syntax-extensions-in-swift
Сегодня Стас Цыганов публикует на Хабре технический радар и подробно рассказывает про опыт iOS-команды Туту:

- как Data-Driven View помогает писать хорошие тесты,

- какие архитектуры пробовали и на чем остановились,

- как ребята режут большое приложение, чтобы у каждой фича-команды была своя комфортная зона ответственности.

https://habr.com/ru/company/tuturu/blog/648073/

p.s. Посмотреть техрадар отдельно от статьи можно здесь.
Доклад Peter Steinberger про то, как они в PSPDFKit реализовывали новую фичу с подписями на SwiftUI и с какими ограничениями столкнулись. Посмотрите, если интересно разобраться с:
- Интеграцией SwiftUI с большой легаси кодовой базой
- Работой с поповерами и тулбарами
- Багами с Geometry Reader
- Определением first responder
https://youtube.com/watch?v=mchbpoC19cU
Раз мы начали день с языковых фичей, давайте ими же и закончим. Представьте, что у вас есть функция, возвращающая какое-то значение. Бывают случаи, когда вам надо просто ее вызвать без дальнейших операций с ее результатом. Если сделать это напрямую – получите варнинг. Чтобы обойти это, используйте аннотацию @discardableResult.
https://twitter.com/BarekJaafar/status/1483577815253532676
iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT
Я хочу потестить на канале новый формат – Q&A с классными экспертами в iOS разработке. Как это будет выглядеть – в определенный день эксперт подключается к нашему чату и в течение нескольких часов отвечает на все вопросы, которые прилетают. Потом мы из этого…
Готовимся тестировать новый формат на iOS Good Reads – Q&A с экспертами!

📆Дата: 11 февраля (пятница), с 11 до 13 часов
🙌Гость: Александр Зимин, которого вы знаете по бесконечности докладов, победам в контестах, и запускам крутых продуктов.
💬Формат: В 11 часов в следующую пятницу я запощу пост в канале с напоминанием о старте Q&A. В обсуждениях к нему пишите ваши вопросы к Саше, общайтесь, холиварьте и спорьте! После окончания я все подобью в удобный дайджест, чтобы опоздавшим было попроще поднять контекст.
👀Темы общения:
- Работа в стартапах
- Запуск своих проектов
- Из iOS-разработчика в продуктовый менеджмент
- NFT, запуск больших проектов
- Жизнь на Бали, жизнь в Лондоне

Ставьте ❤️, если придете, и приходите в реплаи к посту закидывать ваши идеи по улучшению формата!
На Swift Forum активно обсуждается возможность добавления нового сахара для дженериков – дать возможность в параметрах функции вместо переусложненного синтаксиса использовать ключевое слово some.
https://forums.swift.org/t/pitch-opaque-parameter-types/54914/21
Чистый код – это очень расплывчатое понятие (как и архитектура, кек). В каком бы контексте оно не использовалось, полезно пытаться выделить конкретные качества кода, о которых идет речь: читаемость, переиспользуемость, консистентность, тестируемость. Посмотрите на неплохую статью с критикой термина и пополните свой словарик для комментариев на code review.
https://www.steveonstuff.com/2022/01/27/no-such-thing-as-clean-code
Смотрите, нашел классное приложение для мака с набором разных полезных для разработчика штук:
- Форматирование и валидация JSON
- Тестирование регулярок
- Генерация UUID
- JWT генератор
- и еще десяток похожих штук

Все это по отдельности реализовано уже сотню раз, но каждый раз гуглить нужный сервис и вспоминать, а какой из них наименее отвратительный, надоедает. Само приложение платное, но из исходников собрать его вроде довольно просто.
https://github.com/DevUtilsApp/DevUtils-app
Меня недавно поругали, что как-то маловато появляется прикладных статей, которые помогают улучшить командные процессы разработки. Давайте попробуем почитать большой материал про фичефлаги: их интеграцию в приложение и влияние на процессы разработки. На мой взгляд, ничего нового нет, но давайте проверим, насколько вам понравится.
https://www.offnotes.org/feature-flags/
☕️Мы дожили до воскресенья, и это успех! Пора заварить чашечку кофе и нагнать пропущенные за неделю материалы. Помните, что я продолжаю писать дайджесты, только пока получаю публичное одобрение (я вообще зависимый от публичного одобрения человек), поэтому ставьте побольше положительных реакций вроде ❤️, 👍 и 🤩 – и я продолжу это делать!

🔥Лучшие материалы недели:
Apple разрешили выкладывать приложение в App Store в приватном режиме
Устройство render loop
Приложение-органайзер для разработчика

🏎Меня постоянно тянет читать статьи про оптимизацию перфоманса, а на этой неделе их было особенно много.
Перенастраиваем линкер для ускорения запуска
Твиттер-тред с разными советами по оптимизации
Сезон Podlodka iOS Crew про оптимизации перфоманса

👷‍♀️А теперь ударим в следующую группу – любителей почитать про архитектуру.
Как добавление локализации влияет на кодовую базу
Продолжение цикла про Microapps Architecture
Видео: Интеграция SwiftUI в легаси кодовую базу в PSPDFKit
Нет такой вещи как чистый код

💬Напоминаю, что 11 февраля будет исторический день – в iOS Good Reads появится что-то кроме ссылок на чужие статьи. К нам заглянет Александр Зимин и поотвечает в чате на ваши вопросы про продакт-менеджмент, Бали и NFT стартапы!

👀А если вам хочется читать интересные материалы про что-то кроме iOS, подписывайтесь на мои другие каналы: @leadgr, @droidgr и @qa_channel. Там на этой неделе были вот такие штуки:
У менеджеров есть альтернатива техдолгу – менеджерский долг
Две малоизвестные фичи Charles Proxy
Как тестировать модуль KMM с бизнес-логикой

Поддержите дайджест так, чтобы земля затряслась! Покажите вашу любовь и поставьте самую лучшую реакцибю из тех, что есть у вас под рукой. А если будут идеи, как формат улучшить – пишите в комментариях!
#digest
Максимально простой инструмент, чтобы проверить, как иконка приложения будет выглядеть на вашем устройстве:
1. Загружаете иконку
2. Сохраняете страницу на рабочий стол
3. Профит!
https://iosfeeds.com/tools/icon-preview
При работе с асинхронным кодом вопросам управления памятью нужно уделять еще больше времени, чем обычно. Например, легко случайно напороться на неявный захват объекта в каком-то из потоков, и получить утечку памяти. В статье рассматриваются особенности управления памятью при работе async/await и то, как защититься от частых ошибок.
https://swiftbysundell.com/articles/memory-management-when-using-async-await/
➡️ Делаем оффер iOS- и Android-разработчикам за один день. Приглашаем в команды Мобильного банка, Тинькофф Инвестиций, Тинькофф Бизнеса и еще трех проектов.

Вы — в течение одного дня общаетесь с нашей командой. Мы — делаем оффер, если работа подойдет вам по условиям, а задачи — по скиллам.

🖇 Все будет онлайн, 19 февраля. Заявки принимаем до 15 февраля включительно. Подробности и регистрация по ссылке: https://l.tinkoff.ru/mobile-onedayoffer
Команда Swift уже какое-то время работает над интеропом с C++. Благодаря этому компилятор Swift уже сейчас может импортировать и использовать некоторые плюсовые API, например std::vector.

На прошлой неделе произошел важный шаг – вокруг проекта по интеропу была сформирована отдельная рабочая группа. Обычно это означает, что направление переходит в разряд фокусных и ему будет уделяться сильно больше внимания. Короче, отличные новости!

Если вам интересно узнать побольше про текущий подход к C++ интеропу, прочитайте этот манифест. А если хотите следить за новостями в этом направлении, то подписывайтесь на эту ветку Swift Forums.
https://forums.swift.org/t/swift-and-c-interoperability-workgroup-announcement/54998
В Swift есть 13 различных числовых типов. Понимать их различия – супер важно, потому что от этого зависит, как вы будете выражать в коде доменную модель вашего приложения. В статье рассматривается тип Decimal, его особенности и подходящие юзкейсы.
https://www.jessesquires.com/blog/2022/02/01/decimal-vs-double/
Если с Decimal вы разобрались, то можно посмотреть на NSMeasurement – специальный класс для работы с различными единицами измерения, который в паре с соответствующим форматтером еще и хорошо поддается локализации.
https://www.andyibanez.com/posts/using-nsmeasurement-for-working-with-dimensions-and-units/