Хорошая статья о том, как работать с типизированными ошибками в Swift, когда вы используете throw и разный набор ошибок.
Возможно, у вас есть опыт работы с таким подходом в других языках и вы ничего нового не найдете, но если нет, то материал точно будет полезным. А еще он совсем коротенький, очень понятный и полезный 👍
https://www.donnywals.com/designing-apis-with-typed-throws-in-swift/
Возможно, у вас есть опыт работы с таким подходом в других языках и вы ничего нового не найдете, но если нет, то материал точно будет полезным. А еще он совсем коротенький, очень понятный и полезный 👍
https://www.donnywals.com/designing-apis-with-typed-throws-in-swift/
Donny Wals
Designing APIs with typed throws in Swift – Donny Wals
When Swift 2.0 added the keyword to the language, folks were somewhat divided on its usefulness. Some people preferred designing their APIs with an (at the time) unofficial implementation of the type…
Пост на форуме про процесс релиза Swift 6.0 и эстимейты. Можно следить за апдейтами, изменениями и обсуждениями! Если вдруг очень ждете, то можете тут следить за новостями 👍
https://forums.swift.org/t/swift-6-0-release-process/70220
https://forums.swift.org/t/swift-6-0-release-process/70220
Swift Forums
Swift 6.0 Release Process
Swift 6.0 Release Process This post describes the release process, and estimated schedule for Swift 6.0. Snapshots of Swift 6.0 Downloadable snapshots of the Swift 6.0 release branch will be posted regularly as part of continuous integration testing. As…
Материал, который вряд ли интересен широкой аудитории, но он достаточно самобытный и специфичный, чтобы им не поделиться.
Если вы вдруг помните, то раньше в Xcode была возможность использовать плагины. И даже какой-то набор полезных плагинов действительно был. Позже эту опцию убрали, но автор статьи очень скучает по плагинам и попробовал всё-таки вклинить плагин обратно в Xcode.
Всякая возня «под капотом» и не очень понятные большинсту людей вещи, но если вы любительно таких занятий, то материал вам должен понравиться 🙃
Внутри есть ссылка на видео версию 🎥
https://bryce.co/xcode-plugin-loader/
Если вы вдруг помните, то раньше в Xcode была возможность использовать плагины. И даже какой-то набор полезных плагинов действительно был. Позже эту опцию убрали, но автор статьи очень скучает по плагинам и попробовал всё-таки вклинить плагин обратно в Xcode.
Всякая возня «под капотом» и не очень понятные большинсту людей вещи, но если вы любительно таких занятий, то материал вам должен понравиться 🙃
Внутри есть ссылка на видео версию 🎥
https://bryce.co/xcode-plugin-loader/
bryce.co
Modding Plugins back into Xcode
Adding plugin support to Xcode 14+, the hard way
Если у вас в приложении есть куски кода с completion блоками и вы хотите из другого места начать их использовать как async/await функции, то вам понадобится немного с этим повозиться.
Поможет вам в этом такая вещь, как
Суть в том, что вы оборачиваете вызов функции с completion блоком в этот самый
В статье всё подробно описано и с примером. Сверху (над заголовком) есть ссылка на похожую статью, но для кейов, когда еще и exception хотите выбросить.
P.S. Если ваш код с completion блоками написан на Objective-C, то из Swift кода вам по умолчанию будет доступен вызов через async/await, а вот для Swift кода нужна такая обертка!
https://www.hackingwithswift.com/quick-start/concurrency/how-to-use-continuations-to-convert-completion-handlers-into-async-functions
Поможет вам в этом такая вещь, как
continuation
.Суть в том, что вы оборачиваете вызов функции с completion блоком в этот самый
continuation
и дальше просто возвращаете значение из completion блока.В статье всё подробно описано и с примером. Сверху (над заголовком) есть ссылка на похожую статью, но для кейов, когда еще и exception хотите выбросить.
P.S. Если ваш код с completion блоками написан на Objective-C, то из Swift кода вам по умолчанию будет доступен вызов через async/await, а вот для Swift кода нужна такая обертка!
https://www.hackingwithswift.com/quick-start/concurrency/how-to-use-continuations-to-convert-completion-handlers-into-async-functions
Hacking with Swift
How to use continuations to convert completion handlers into async functions - a free Swift Concurrency by Example tutorial
Learn Swift coding for iOS with these free tutorials
This media is not supported in your browser
VIEW IN TELEGRAM
Наверняка вы используете в своем проекте много сторонних библиотек.
И вряд ли вы часто обращаете внимание, но в основном они все идут с какой-то лицензией. В основном это MIT лицензия. Суть в том, что в этой лицензии прописано, что вы бесплатно можете использовать эту библиотечку, но в свою очередь обязутесь (грубо говоря) рассказывать о том, что используете эту библиотеку в своем приложении.
Конечно, это всё размыто и вряд ли у вас будут проблемы по этому поводу, но если вдруг, вы захотите, чтобы в настройках вашего приложения появился такой замечательный пункт, который расскажет о всех SDK, что вы используете, и о всех их лицензиях, то вот статья о том, как это сделать.
Я очень сомневаюсь, что вы этим займетесь, но хотя бы знать, что так можно сделать - уже неплохо 🙃
СПОЙЛЕР: это совсем не сложно 👍
https://www.avanderlee.com/workflow/third-party-libraries-acknowledgments-swift-packages/
И вряд ли вы часто обращаете внимание, но в основном они все идут с какой-то лицензией. В основном это MIT лицензия. Суть в том, что в этой лицензии прописано, что вы бесплатно можете использовать эту библиотечку, но в свою очередь обязутесь (грубо говоря) рассказывать о том, что используете эту библиотеку в своем приложении.
Конечно, это всё размыто и вряд ли у вас будут проблемы по этому поводу, но если вдруг, вы захотите, чтобы в настройках вашего приложения появился такой замечательный пункт, который расскажет о всех SDK, что вы используете, и о всех их лицензиях, то вот статья о том, как это сделать.
Я очень сомневаюсь, что вы этим займетесь, но хотя бы знать, что так можно сделать - уже неплохо 🙃
СПОЙЛЕР: это совсем не сложно 👍
https://www.avanderlee.com/workflow/third-party-libraries-acknowledgments-swift-packages/
Наверное, те, кто активно пользуется SwiftUI, знают про Preview macro.
Это такая штука, которая даже в пустом проекте на SwiftUI внизу файла с ContentView есть. Она используется, чтобы делать превьюшки (и так было ясно, но всё же) справа в Xcode.
И то, что она юзается для SwiftUI вряд ли секрет, но многие, предположу, не знали, что такое можно даже с UIKit использовать. Ну и с AppKit тоже.
И еще этот макрос умеет немного параметров на вход принимать.
В общем вот официальная дока Apple, где они чуть подробнее про этот макрос (и инструмент для превью в целом) рассказывают и показывают 👍
https://developer.apple.com/documentation/xcode/previewing-your-apps-interface-in-xcode
Это такая штука, которая даже в пустом проекте на SwiftUI внизу файла с ContentView есть. Она используется, чтобы делать превьюшки (и так было ясно, но всё же) справа в Xcode.
И то, что она юзается для SwiftUI вряд ли секрет, но многие, предположу, не знали, что такое можно даже с UIKit использовать. Ну и с AppKit тоже.
И еще этот макрос умеет немного параметров на вход принимать.
В общем вот официальная дока Apple, где они чуть подробнее про этот макрос (и инструмент для превью в целом) рассказывают и показывают 👍
https://developer.apple.com/documentation/xcode/previewing-your-apps-interface-in-xcode
Apple Developer Documentation
Previewing your app’s interface in Xcode | Apple Developer Documentation
Iterate designs quickly and preview your apps’ displays across different Apple devices.
Очень содержательный материал про Optional-ы в Swift-е!
Опытные разработчики вряд ли найдут много нового, но новичкам точно будет полезно.
Кстати, какую-то часть из того, что разбирается в статье, часто спрашивают на собеседованиях, так что ознакомиться точно стоит.
Если коротко, то автор рассказывает о том, что такое Optional-ы, что представляют из себя «под капотом», как их использовать, какие последствия есть 👍
https://www.avanderlee.com/swift/optionals-in-swift-explained-5-things-you-should-know/
Опытные разработчики вряд ли найдут много нового, но новичкам точно будет полезно.
Кстати, какую-то часть из того, что разбирается в статье, часто спрашивают на собеседованиях, так что ознакомиться точно стоит.
Если коротко, то автор рассказывает о том, что такое Optional-ы, что представляют из себя «под капотом», как их использовать, какие последствия есть 👍
https://www.avanderlee.com/swift/optionals-in-swift-explained-5-things-you-should-know/
SwiftLee
Optionals in Swift explained: 5 things you should know
Optionals in Swift can be unwrapped (!) in multiple ways. As it's defined as an enum you can do more advanced implementations as well.
Разрабатывая приложение, наверняка вы много думали о том, что делать с оттоком пользователей.
Состав пишет, что в AppMetrica добавили предикты LTV и оттока, которые помогают сразу отследить lifetime value для оптимизации рекламы и придумать, как уменьшить отток пользователей. Предиктивная модель работает, кстати, на основе ML-технологии и сама адаптируется под аудиторию!
Состав пишет, что в AppMetrica добавили предикты LTV и оттока, которые помогают сразу отследить lifetime value для оптимизации рекламы и придумать, как уменьшить отток пользователей. Предиктивная модель работает, кстати, на основе ML-технологии и сама адаптируется под аудиторию!
Sostav
В AppMetrica добавили инструмент прогнозирования LTV и оттока
Он позволит маркетологам оптимизировать рекламные кампании
Если вдруг пропустили, то недавно компания Apple выпустила анонс, где указала, что все апдейты приложений с 1 мая обязаны «объяснить» использование той или иной API в своем проекте. И все third-party libraries в вашем проекте также должны это сделать.
Подробнее читайте в посте и переходите по вложенным ссылкам.
https://developer.apple.com/news/?id=3d8a9yyh
Подробнее читайте в посте и переходите по вложенным ссылкам.
https://developer.apple.com/news/?id=3d8a9yyh
Apple
Privacy updates for App Store submissions - Latest News - Apple Developer
Developers are responsible for all code included in their apps. At WWDC23, we introduced new privacy manifests and signatures for commonly used third-party SDKs and announced that developers will need to declare approved reasons for using a set of APIs in…
Многие из вас (надеюсь) знают, что мы в Qonversion занимаемся всем, что связано с приложениями и сервисами, которые монетизируют свой продукт через in-app purchases.
Так вот у нас есть классные новости для стартапов и тех, кто только начинает развивать свое мобильное приложение.
Мы в Qonversion запустили программу, которая дает возможность получить бесплатно почти все самые классные фичи максимального тарифа, в том числе А/Б тесты и аналитику Apple Search Ads.
Подать заявку на стартап программу можно по этой ссылке!
По условиям все просто:
1. Нужно, чтобы приложение было уже активным и опубликованным в сторе
2. Выручка до $10k в месяц (MTR)
3. Вы должны быть новым клиентом Qonversion
Так вот у нас есть классные новости для стартапов и тех, кто только начинает развивать свое мобильное приложение.
Мы в Qonversion запустили программу, которая дает возможность получить бесплатно почти все самые классные фичи максимального тарифа, в том числе А/Б тесты и аналитику Apple Search Ads.
Подать заявку на стартап программу можно по этой ссылке!
По условиям все просто:
1. Нужно, чтобы приложение было уже активным и опубликованным в сторе
2. Выручка до $10k в месяц (MTR)
3. Вы должны быть новым клиентом Qonversion
Наверняка многие слышали про Test-Driven Development (тот самый TDD). Но вряд ли многие его используют. Так вот если вы вдруг захотите его начать использовать, или вам просто интересно чуть подробнее разобраться в этой теме, то вот неплохой материал с примерами!
https://www.avanderlee.com/workflow/test-driven-development-tdd-for-bug-fixes-in-swift/
https://www.avanderlee.com/workflow/test-driven-development-tdd-for-bug-fixes-in-swift/
SwiftLee
Test-Driven Development (TDD) for bug fixes in Swift
Test-driven development increases code quality, test code coverage, and codebase confidence. You'll prevent bugs from returning.
What’s new in Swift 5.10?
https://www.donnywals.com/everything-you-need-to-know-about-swift-5-10/
https://www.donnywals.com/everything-you-need-to-know-about-swift-5-10/
Donny Wals
Everything you need to know about Swift 5.10 – Donny Wals
The long awaited iOS 17.4 and iPadOS 17.4 have just been released which means that we could slowly but surely start seeing alternative app stores to appear if you’re an EU iOS user. Alongside the 17.4…
iOS.Devs
Если вдруг пропустили, то недавно компания Apple выпустила анонс, где указала, что все апдейты приложений с 1 мая обязаны «объяснить» использование той или иной API в своем проекте. И все third-party libraries в вашем проекте также должны это сделать. Подробнее…
А вот и интересный (или странный?) кейс про новую политику и UserDefaults! Хотя в официальной доке об этом есть упоминание, конечно.
https://mastodon.social/@chockenberry/112095424613859371
https://mastodon.social/@chockenberry/112095424613859371
Mastodon
Craig Hockenberry (@chockenberry@mastodon.social)
Attached: 1 image
If you're like 99.9999% of other developers, you're using UserDefaults in an app.
And because you do that, you'll see this message when you upload your next build to the App Store.
Here's what to do about it…
If you're like 99.9999% of other developers, you're using UserDefaults in an app.
And because you do that, you'll see this message when you upload your next build to the App Store.
Here's what to do about it…
Классная статья, где автор рассказывает о том, что постоянство и последовательность в сайд проджектах всегда очень важны и приносят хороший результат! Это, кажется, и не было секретом, но тут в статье есть конкретные примеры и даже графики!
А сама статья на две минуты чтения, так что можно быстро ознакомиться 👍
https://www.avanderlee.com/optimization/the-power-of-consistency-in-side-projects/
А сама статья на две минуты чтения, так что можно быстро ознакомиться 👍
https://www.avanderlee.com/optimization/the-power-of-consistency-in-side-projects/
SwiftLee
The power of consistency in side projects
Consistency and focus result in compounding growth. Revenue will increase, daily active users will reach all time highs.
Если вы используете SwiftUI, то наверняка используете и
https://www.swiftwithvincent.com/blog/be-careful-when-using-ontapgesture
.onTapGesture()
. Вот статья, где автор говорит, что с этим нужно быть осторожнее. И приводит несколько примеров, где это может привести к проблемам 🤔https://www.swiftwithvincent.com/blog/be-careful-when-using-ontapgesture
Swift with Vincent
Be careful when using .onTapGesture() — Swift with Vincent
You’re more of a video kind of person? I’ve got you covered! Here’s a video with the same content than this article 🍿
Очередной хак о том, как ускорить время билда в Swift проекте. На этот раз при помощи
Конечно, любое искорение билда будет не лишним, но хз насколько много профита с этого можно получить.
Ну и стоит обратить внимание на одно предложение из статьи: Forward-declaring Swift functions allow you to do all sorts of crazy things, but remember, this is not an official feature of the language.
https://swiftrocks.com/using-silgenname-to-call-private-swift-code
@_silgen_name
. Конечно, любое искорение билда будет не лишним, но хз насколько много профита с этого можно получить.
Ну и стоит обратить внимание на одно предложение из статьи: Forward-declaring Swift functions allow you to do all sorts of crazy things, but remember, this is not an official feature of the language.
https://swiftrocks.com/using-silgenname-to-call-private-swift-code
Swiftrocks
Using @_silgen_name to forward declare functions in Swift and improve build times
Let me start this post with a disclaimer. The trick I'm going to show here is quite powerful, but much like every other underscored attribute in Swift, this is something you should not mess with unless you know exactly what you're doing.
Если вам вдруг очень нужно было на SwiftUI научиться ловить нажатия разных кнопок на клавиатуре по типу return/shift/и так далее, то вот материал об этом ⌨️
Больше актуально для разработки приложений под iPad, наверное, но вдруг и для iPhone вам нужно!
https://www.avanderlee.com/swiftui/key-press-events-detection/
Больше актуально для разработки приложений под iPad, наверное, но вдруг и для iPhone вам нужно!
https://www.avanderlee.com/swiftui/key-press-events-detection/
SwiftLee
Key press events detection in SwiftUI
Listen to key press events, either specific or a set of keys. You can detect modifiers, as well as phases like up, down, or repeat.
Если вы используете DocC, то уже, наверное, знаете насколько он хорош.
Но в Xcode 15 он стал даже еще лучше.
Одно из основных изменений - теперь DocC умеет правильно показывать и давать ссылки на сущности, которые вы расширяете через Extension. Полностью правильно обработанные блоки с возможностью клика и перехода на детальную информацию по ним.
В общем если еще не используете DocC, то хотя бы попробуйте. Очень классная вещь! 👍
https://danielsaidi.com/blog/2024/03/21/how-to-link-to-native-type-extensions-in-docc
Но в Xcode 15 он стал даже еще лучше.
Одно из основных изменений - теперь DocC умеет правильно показывать и давать ссылки на сущности, которые вы расширяете через Extension. Полностью правильно обработанные блоки с возможностью клика и перехода на детальную информацию по ним.
В общем если еще не используете DocC, то хотя бы попробуйте. Очень классная вещь! 👍
https://danielsaidi.com/blog/2024/03/21/how-to-link-to-native-type-extensions-in-docc
Daniel Saidi
How to link to native type extensions in DocC
In this post, we’ll take a look at how we can use Xcode 15’s improved 15 DocC capabilities to link to native type extensions, which lets ...
Очень интересный материал про perfromance check-и.
Автор предлагает библиотечку для написания бенчмарков, а потом это всё можно прикрутить к пул-реквестам и всегда следить за тем, не ухудшает ли ваш новый код производительность, не стал ли больше грузить cpu, как обстоят дела с потоками, памятью и так далее?
В общем на бумаге выглядит достаточно интересно. На деле пока не знаю 🤷
Ну и если это кому-то важно, то это опенсорс библиотечка! 👍
https://www.swift.org/blog/benchmarks/
Автор предлагает библиотечку для написания бенчмарков, а потом это всё можно прикрутить к пул-реквестам и всегда следить за тем, не ухудшает ли ваш новый код производительность, не стал ли больше грузить cpu, как обстоят дела с потоками, памятью и так далее?
В общем на бумаге выглядит достаточно интересно. На деле пока не знаю 🤷
Ну и если это кому-то важно, то это опенсорс библиотечка! 👍
https://www.swift.org/blog/benchmarks/
Swift.org
Introducing the Benchmark Package: Complementing Unit Tests with Performance Checks
In the world of software development, the old adage “make it work, make it right, make it fast” serves as a guiding principle for creating robust, efficient applications. This journey starts with ensuring that our code functions as intended, a task where…
Просто невероятный по качеству, объему и уникальности материал! 😱
Про текстовые редакторы от Apple!
Всё супер детально, красиво, с примерами, объяснением и вообще всем, чем возможно, о том, как устроены эти редакторы, как работают и так далее.
Большой объем, как раз за выходные можно осилить. А еще можете почитать первую часть этой статьи, ссылка внутри!
https://papereditor.app/internals
Про текстовые редакторы от Apple!
Всё супер детально, красиво, с примерами, объяснением и вообще всем, чем возможно, о том, как устроены эти редакторы, как работают и так далее.
Большой объем, как раз за выходные можно осилить. А еще можете почитать первую часть этой статьи, ссылка внутри!
https://papereditor.app/internals
Paper
Nerdy internals of an Apple text editor
Fascinating engineering details behind Paper.