So something special happened this week. I published my 200th episode on my podcast feed.
Pretty neat. But it actually is the 201st upload I did. There was one episode I removed from my feed at some point. ๐ But a milestone is a mileston nonetheless.
Since my previous newsletter things have been super busy.
The Do iOS workshop with Daniel Steinberg ran on Monday 7th and I was collecting and bringing some of the material we needed for Do iOS to Amsterdam. For lunch, I stopped over at the workshop to check in on things and talk to a few people to get the vibe of the crowd at the workshop. It was pretty good.
Then it was time for Do iOS day. I was the stage host the entire event. We started by onboarding everyone at the door. I spoke a few words with all attendees at registration. Then two day of talks, making sure catering was taken care of. Taking care of little issues. And making sure we kept a good pace. At the end of the first day we had a really nice social drink with all attendees and a typical small Dutch snack.
The conference venue was small, but super nice.
The 4 days after Do iOS I can't remember anymore what I did. My notes tell me they were all useful things. But after such an intense set of days, I needed time to catch my breath again. But soon had to close up the bookkeeping of Do iOS. It had a small positive financial result, exactly as intended.
Meanwhile, the whole Twitter thing unfolded, so I've been taking a long hard look at Mastodon and I think it is starting to grow on me. Initially, it was all so similar but strange to me, I couldn't make heads or tails out of it. But I think there is some true value in there. So I am curious to find our what Mastodon will be to my online circle a couple of months from now.
If you want to find me on Mastodon, this is me.
Or just look at the bottom of any of my website's pages. I've actually been thinking about setting up a personal Mastodon instance, but instead I am considering moving my AppForce1 account over to iosdev.space. There is a nice thing you can do with the webfinger protocol on your own website too.
And during all of the above, work just kept going and I seem to finally be back into some form of control on everything.
So how was your first three weeks of November?
-Jeroen
Sponsored by
Release content
Episode 96: Recovering after a conference
Latest news episode Links
When does a SwiftUI Environment get retained?
The answer depends on how we use SwiftUI. For an app entirely written using it, one might argue that it gets released whenever the app finishes. But what about an UIKit app that uses some SwiftUI views?
To answer this question, letโs explore some scenarios involving environment objects. They have reference semantics, and we can track their instances using the memory graph.
Animated Launch Screen in SwiftUI
In this article you will learn how to create a Launch screen in SwiftUI using modern approaches like environment variables, create a state machine to control the animations, and also async/await to mock an API call.
The API call part is very important because after that is completed it will trigger the dismissal of the Launch Screen, and this behavior is really close to or if not identical to what we have in a lot of apps. Keep in mind the responsibility of everything here. The act of call to dismiss doesnโt come from the view itself as an external agent, but the dismissal itself is the responsibility of the Launch Screen State Manager.
A Guided Tour for SwiftUI ForEach Structure
We will start this article by answering the first thing you need to know, and the exact definition that structures ForEach in SwiftUI. Then we will provide examples of how and when you can use it to improve your code.
ForEach in SwiftUI is one of the most basic structures out there and it is really important to have a good grasp of it.
What is ForEach in SwiftUI?
What is the difference between List and ForEach in SwiftUI
ForEach is a view that creates an array of views from an underlying collection of data. The resulting views can be used within other container views, e.g., VStack, HStack, and List.
List is a container view that turns a collection of views into a list structure.
How Does Swift Concurrency Prevents Thread Explosions?
A few weeks back, I read an article by Wojciech Kulik, where he talks about some of the pitfalls in the Swift Concurrency framework. In one of the sections, Wojciech briefly mentioned thread explosion, and how Swift Concurrency can prevent it from happening by limiting us from overcommitting the system with more threads than the CPU cores.
This makes me wonderโฆ Is that really the case? How does this work behind the scenes? Can we somehow cheat the system to create more threads than the CPU cores?
We are going to answer all these questions in this article. So without further ado, letโs jump right in.
Building custom layout in SwiftUI. Basics
SwiftUI provides the Layout protocol allowing us to build super-custom layouts by digging into the layout system without using GeometryReader. Layout protocol brings us the incredible power of building and reusing any layout you can imagine. This week we will learn how to use the new Layout protocol to build a flow layout in SwiftUI.
Using SwiftUI Effects Library: How to Add Particle Effects to iOS Apps
Creating particle animations similar to the iMessage screen and bubble effects in iOS can be difficult. The main reason is that the Core Animation Emitter Layer that allows you to animate, emit and render particle effects is complex to set up and configure due to its large number of parameters.
In this article, you will discover how to integrate and render particles such as snow, confetti, rain, smoke, and fireworks to iOS applications effortlessly and without knowing the Physics behind these animations.
And finally, Tibor has a nice surprise for you. Tibor has been kind enough to provide me with a free copy of his latest Swift cheatsheet.
Introducing - Swift cheatsheet - The.Swift.Dev.
A complete Swift programming language reference for beginners with more than a 100 snippets. Now available on Gumroad.
And thatโs it again for this newsletter. Now that Do iOS is over. I plan to get back in my regular flow again.
Best,
Jeroen