В Swift 5.6 нас ожидает очень важная доработка в SwiftPM – поддержка плагинов, которые запускаются во время сборки пакета. Вот тут можно почитать детальный пропозал. А если хочется посмотреть, как это будет работать на реальном примере, не дожидаясь выхода новой версии, почитайте эту статью, где плагин используется для автоматической генерации интерфейса со списком цветов, объявленных в ассетах.
https://www.polpiella.dev/an-early-look-at-swift-extensible-build-tools
https://www.polpiella.dev/an-early-look-at-swift-extensible-build-tools
GitHub
swift-evolution/proposals/0303-swiftpm-extensible-build-tools.md at main · swiftlang/swift-evolution
This maintains proposals for changes and user-visible enhancements to the Swift Programming Language. - swiftlang/swift-evolution
🔥22👍5❤1
И еще одна важная новость. Apple разрешили выкладывать приложение в App Store в приватном режиме. Оно будет доступно по прямой ссылке, но не будет индексироваться в магазине. Это супер удобная штука для:
- Организации софт лонча или бета программы
- Распространения приложений, предназначенных для ограниченного круга пользователей (например, посетителей конфы)
https://developer.apple.com/support/unlisted-app-distribution/
- Организации софт лонча или бета программы
- Распространения приложений, предназначенных для ограниченного круга пользователей (например, посетителей конфы)
https://developer.apple.com/support/unlisted-app-distribution/
Apple
Unlisted App Distribution - Support - Apple Developer
Release your apps that aren’t suited for public distribution as unlisted on the App Store, discoverable only with a direct link. Unlisted apps don’t appear in any App Store categories, recommendations, charts, search results, or other listings. In addition…
🔥52👍7🎉3👎2
Хотите получить актуальный cookbook по оптимизации своих приложений для iOS? Новый сезон Podlodka iOS Crew стартует уже 14 февраля!
За 5 дней мы успеем подробно разобрать Xcode Instruments на практических кейсах, поможем избавиться от лагов UI, уменьшить размер приложения и время его запуска. А еще научимся писать оптимальные unit-тесты, разберемся в lowlevel оптимизациях с помощью LLVM и Swift compiler. И все это в формате воркшопов с множеством кейсов-примеров, которые вы сразу сможете применять в собственных проектах.
Успейте купить билет по сниженной цене — специальное предложение действует только до 2 февраля.
За 5 дней мы успеем подробно разобрать Xcode Instruments на практических кейсах, поможем избавиться от лагов UI, уменьшить размер приложения и время его запуска. А еще научимся писать оптимальные unit-тесты, разберемся в lowlevel оптимизациях с помощью LLVM и Swift compiler. И все это в формате воркшопов с множеством кейсов-примеров, которые вы сразу сможете применять в собственных проектах.
Успейте купить билет по сниженной цене — специальное предложение действует только до 2 февраля.
podlodka.io
Онлайн-конференция Podlodka iOS Crew, сезон #16
Недельное мероприятие от команды Podlodka: ежедневные интерактивные сессии в Zoom по актуальным проблемам iOS-разработки, нон-стоп общение с экспертами и звёздами индустрии, закрытое профессиональное сообщество в Telegram.
❤10👍3
Новая часть цикла про Microapps Architecture. В этот раз про шаринг ресурсов и локализации между модулями.
https://swiftwithmajid.com/2022/01/26/microapps-architecture-in-swift-resources-and-localization/
https://swiftwithmajid.com/2022/01/26/microapps-architecture-in-swift-resources-and-localization/
Swift with Majid
Microapps architecture in Swift. Resources and localization.
This week we will continue the topic of microapps architecture in Swift by touching on another essential edge of this approach. In this post, we will talk about sharing resources between modules and separating the localization of feature modules.
👍13🥰2
Ребята из EmergeTools продолжают дико угорать по разным оптимизациям перфоманса. Чтобы ускорить среднее время старта приложений, они скармливают линкеру инструкции по тому, в каком порядке надо группировать символы. Таким образом в первую очередь считываются только символы, необходимые для запуска. Больше деталей, измерений приложений из App Store и теории – в статье.
https://www.emergetools.com/blog/posts/FasterAppStartupOrderFiles
https://www.emergetools.com/blog/posts/FasterAppStartupOrderFiles
Emergetools
Emerge Tools Blog | How Order Files Reduce App Startup Time
An in depth look at how long it takes to read an app binary from disk, and why order files make apps launch faster.
👍10
💪 Узнайте максимум о iOS разработке.
❗️Приглашаем всех на бесплатные вебинар по iOS разработке для тех, кто с 0 и у кого уже есть опыт разработки.
👉 Только осваиваете азы или хотите создать свое первое приложение с 0?
Урок для новичков:
Классы - https://otus.pw/F8dQ/
❓ Уже есть опыт разработки? Проверьте свои знания пройдя тест.
Зарегистрируйтесь на вебинар и пройдите тест для участия:
Пишем выразительный код на Swift 5.x - https://otus.pw/rKnf/
❗️Приглашаем всех на бесплатные вебинар по iOS разработке для тех, кто с 0 и у кого уже есть опыт разработки.
👉 Только осваиваете азы или хотите создать свое первое приложение с 0?
Урок для новичков:
Классы - https://otus.pw/F8dQ/
❓ Уже есть опыт разработки? Проверьте свои знания пройдя тест.
Зарегистрируйтесь на вебинар и пройдите тест для участия:
Пишем выразительный код на Swift 5.x - https://otus.pw/rKnf/
Otus
iOS Developer. Professional | OTUS
Курс Разработчик iOS в OTUS с возможностью трудоустройства
💩63👍3❤2👎2🔥1
Dodo рассказывают про свой довольно тернистый путь по локализации приложения, использованные инструменты и совершенные ошибки. Если ваш проект тоже поддерживает несколько языков, рекомендую почитать – какие-нибудь идеи сможете забрать и себе.
https://habr.com/ru/company/dododev/blog/592751/
https://habr.com/ru/company/dododev/blog/592751/
Хабр
15 стран, 9 языков: трудности перевода одного iOS-приложения
Представьте, что у вас есть приложение для iOS. Оно полностью на русском, без единой локализованной строки. Часть строк вы выводите на экран в коде, часть зашита в Storyboard и xib-файлах. Приложение...
👍9
Твиттер тред от Жени Ртищева про оптимизации размера приложения, времени старта и скорости сборки. Каждое из направлений разбирается в формате "зачем оптимизировать", "что влияет", "как оптимизировать". Учитывая, что в перфомансе вовсю действует правило Парето, по которому 20% усилий дают 80% результата, эти лайфхаки вам пригодятся.
https://twitter.com/katleta3000/status/1488060002468352005
https://twitter.com/katleta3000/status/1488060002468352005
👍22🔥5
Очень интересный тред на Reddit про то, действительно ли функциональные программы или языки по определению более медленные, или все дело в неэффективности современных языков. Все сводится к тому, что производительность – понятие растяжимое, функциональность – тоже. Но в самих комментариях много ценных идей и ссылок.
https://www.reddit.com/r/ProgrammingLanguages/comments/rsce6j/why_are_imperative_programs_considered_faster
https://www.reddit.com/r/ProgrammingLanguages/comments/rsce6j/why_are_imperative_programs_considered_faster
Reddit
From the ProgrammingLanguages community on Reddit
Explore this post and more from the ProgrammingLanguages community
👍11🤮1
В Kotlin есть классная фича – scope functions. Это функции, выполняющие блок кода в контексте определенного объекта с захватыванием его. Вот простой пример:
https://alejandromp.com/blog/fluent-syntax-extensions-in-swift
val adam = Person("Adam").apply {
age = 20
city = "London"
}
В статье рассказывается, почему в Swift такую же штуку реализовать не так просто, и как эти ограничения можно обойти.https://alejandromp.com/blog/fluent-syntax-extensions-in-swift
Alejandro M. P.
Fluent syntax extensions in Swift | Alejandro M. P.
In the early days of Swift, one thing I really enjoyed was the focus on properties (bye-bye ivars!) and the unification of stored and computed property syntax. It became very common to define properties that initialized some parts of your view automatically.
💩13👍11🔥3
Сегодня Стас Цыганов публикует на Хабре технический радар и подробно рассказывает про опыт iOS-команды Туту:
- как Data-Driven View помогает писать хорошие тесты,
- какие архитектуры пробовали и на чем остановились,
- как ребята режут большое приложение, чтобы у каждой фича-команды была своя комфортная зона ответственности.
https://habr.com/ru/company/tuturu/blog/648073/
p.s. Посмотреть техрадар отдельно от статьи можно здесь.
- как Data-Driven View помогает писать хорошие тесты,
- какие архитектуры пробовали и на чем остановились,
- как ребята режут большое приложение, чтобы у каждой фича-команды была своя комфортная зона ответственности.
https://habr.com/ru/company/tuturu/blog/648073/
p.s. Посмотреть техрадар отдельно от статьи можно здесь.
Хабр
4,5 года из жизни iOS-команды в пяти историях и одном техрадаре
Привет, я Стас, лид мобильной разработки Туту.ру. Хочу поделиться, к чему мы пришли, к чему только идём, а от чего избавились за пять лет, что я в компании. Часть решений может шокировать. Поехали!...
🔥7👍6👎1
Доклад Peter Steinberger про то, как они в PSPDFKit реализовывали новую фичу с подписями на SwiftUI и с какими ограничениями столкнулись. Посмотрите, если интересно разобраться с:
- Интеграцией SwiftUI с большой легаси кодовой базой
- Работой с поповерами и тулбарами
- Багами с Geometry Reader
- Определением first responder
https://youtube.com/watch?v=mchbpoC19cU
- Интеграцией SwiftUI с большой легаси кодовой базой
- Работой с поповерами и тулбарами
- Багами с Geometry Reader
- Определением first responder
https://youtube.com/watch?v=mchbpoC19cU
YouTube
Peter Steinberger: Evolving Existing Projects With SwiftUI
Presented at Swift Heroes 2021
EVOLVING EXISTING PROJECTS WITH SWIFTUI
Peter Steinberger, Founder, PSPDFKit
In this presentation I'll be looking into strategically evolving existing older projects (that still contain Objective-C) with SwiftUI. We will…
EVOLVING EXISTING PROJECTS WITH SWIFTUI
Peter Steinberger, Founder, PSPDFKit
In this presentation I'll be looking into strategically evolving existing older projects (that still contain Objective-C) with SwiftUI. We will…
👍16
Раз мы начали день с языковых фичей, давайте ими же и закончим. Представьте, что у вас есть функция, возвращающая какое-то значение. Бывают случаи, когда вам надо просто ее вызвать без дальнейших операций с ее результатом. Если сделать это напрямую – получите варнинг. Чтобы обойти это, используйте аннотацию
https://twitter.com/BarekJaafar/status/1483577815253532676
@discardableResult.
https://twitter.com/BarekJaafar/status/1483577815253532676
Twitter
Jaafar Barek
💡 Swift Tip: If you have a function that has a return value, but in some scenarios you want to ignore it. You can use "@discardableResult" to avoid warnings or the usage of _ Example: #iOS #Swift #iosdev #programming #development
💩29😱17👍11🤔3🔥1
Статья с описанием того, как конкретно DocC преобразует граф символов в статический контент, и как подготовить его к размещению на GitHub Pages.
https://rhonabwy.com/2022/01/28/hosting-your-swift-library-docs-on-github-pages/
https://rhonabwy.com/2022/01/28/hosting-your-swift-library-docs-on-github-pages/
Rhonabwy
Hosting your Swift Library Docs on Github Pages
The beta for Xcode 13.3 dropped yesterday. With it came a released version of Swift 5.6 and a bunch of neat additions that the 5.6 release enables. A feature I was watching closely was two-fold: th…
👍9
iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT
Я хочу потестить на канале новый формат – Q&A с классными экспертами в iOS разработке. Как это будет выглядеть – в определенный день эксперт подключается к нашему чату и в течение нескольких часов отвечает на все вопросы, которые прилетают. Потом мы из этого…
Готовимся тестировать новый формат на iOS Good Reads – Q&A с экспертами!
📆Дата: 11 февраля (пятница), с 11 до 13 часов
🙌Гость: Александр Зимин, которого вы знаете по бесконечности докладов, победам в контестах, и запускам крутых продуктов.
💬Формат: В 11 часов в следующую пятницу я запощу пост в канале с напоминанием о старте Q&A. В обсуждениях к нему пишите ваши вопросы к Саше, общайтесь, холиварьте и спорьте! После окончания я все подобью в удобный дайджест, чтобы опоздавшим было попроще поднять контекст.
👀Темы общения:
- Работа в стартапах
- Запуск своих проектов
- Из iOS-разработчика в продуктовый менеджмент
- NFT, запуск больших проектов
- Жизнь на Бали, жизнь в Лондоне
Ставьте ❤️, если придете, и приходите в реплаи к посту закидывать ваши идеи по улучшению формата!
📆Дата: 11 февраля (пятница), с 11 до 13 часов
🙌Гость: Александр Зимин, которого вы знаете по бесконечности докладов, победам в контестах, и запускам крутых продуктов.
💬Формат: В 11 часов в следующую пятницу я запощу пост в канале с напоминанием о старте Q&A. В обсуждениях к нему пишите ваши вопросы к Саше, общайтесь, холиварьте и спорьте! После окончания я все подобью в удобный дайджест, чтобы опоздавшим было попроще поднять контекст.
👀Темы общения:
- Работа в стартапах
- Запуск своих проектов
- Из iOS-разработчика в продуктовый менеджмент
- NFT, запуск больших проектов
- Жизнь на Бали, жизнь в Лондоне
Ставьте ❤️, если придете, и приходите в реплаи к посту закидывать ваши идеи по улучшению формата!
❤66
На Swift Forum активно обсуждается возможность добавления нового сахара для дженериков – дать возможность в параметрах функции вместо переусложненного синтаксиса использовать ключевое слово
https://forums.swift.org/t/pitch-opaque-parameter-types/54914/21
some.
https://forums.swift.org/t/pitch-opaque-parameter-types/54914/21
Swift Forums
[Pitch] Opaque parameter types
Hi all, Opaque result types have been part of the language for a while now. Ever since the early pitches, we've also talked about using some in parameter positions, which came up again in the recent thread on easing the learning curve for introducing generic…
👍10👎5🤔5
Как в iOS устроен render loop, какие проблемы с производительностью могут возникнуть на разных его этапах и как с ними бороться.
https://habr.com/ru/post/647177/
https://habr.com/ru/post/647177/
Хабр
Оптимизация рендера в iOS: frame buffer, Render Server, FPS, CPU vs GPU
Render Loop крутится — кадры мутятся. Доброго времени суток, уважаемые читатели. Здесь я начинаю свой цикл статей о работе с графикой в iOS. В моих планах разобраться с работой базовых механик...
🔥45👍3🤩1
Чистый код – это очень расплывчатое понятие (как и архитектура, кек). В каком бы контексте оно не использовалось, полезно пытаться выделить конкретные качества кода, о которых идет речь: читаемость, переиспользуемость, консистентность, тестируемость. Посмотрите на неплохую статью с критикой термина и пополните свой словарик для комментариев на code review.
https://www.steveonstuff.com/2022/01/27/no-such-thing-as-clean-code
https://www.steveonstuff.com/2022/01/27/no-such-thing-as-clean-code
👏10
Смотрите, нашел классное приложение для мака с набором разных полезных для разработчика штук:
- Форматирование и валидация JSON
- Тестирование регулярок
- Генерация UUID
- JWT генератор
- и еще десяток похожих штук
Все это по отдельности реализовано уже сотню раз, но каждый раз гуглить нужный сервис и вспоминать, а какой из них наименее отвратительный, надоедает. Само приложение платное, но из исходников собрать его вроде довольно просто.
https://github.com/DevUtilsApp/DevUtils-app
- Форматирование и валидация JSON
- Тестирование регулярок
- Генерация UUID
- JWT генератор
- и еще десяток похожих штук
Все это по отдельности реализовано уже сотню раз, но каждый раз гуглить нужный сервис и вспоминать, а какой из них наименее отвратительный, надоедает. Само приложение платное, но из исходников собрать его вроде довольно просто.
https://github.com/DevUtilsApp/DevUtils-app
🥰55🔥8👍3👎1
Меня недавно поругали, что как-то маловато появляется прикладных статей, которые помогают улучшить командные процессы разработки. Давайте попробуем почитать большой материал про фичефлаги: их интеграцию в приложение и влияние на процессы разработки. На мой взгляд, ничего нового нет, но давайте проверим, насколько вам понравится.
https://www.offnotes.org/feature-flags/
https://www.offnotes.org/feature-flags/
👍18