AppForce1: news and info for iOS app developers
AppForce1: news and info for iOS app developers
Do iOS sold all its conference tickets
Full on prep mode for Do iOS by now. What is it. Just 5 or 6 weeks remaining. When I am preparing this episode, there were just 2 tickets remaining. So we will have a full house. I was also looking into putting together a workshop the day before the conference and that has now been put together thanks to the gracious support of Jeremy Barger. You might know him as TheSwiftNomad on Twitter. He is looking for people to take a look at his Swift Developer Academy. So take a look.
Articles in this episode:
- Swift’s print(), debugPrint(), String(reflecting:), Mirror(reflecting:) and dump()
- Side Projects: 10 Tips for being successful
- Deadlocks in Swift explained: detecting and solving
- How to manage lifecycle events in SwiftUI iOS applications
- viewDidLoad() in SwiftUI
- Why your Xcode version still matters with Module Stability
- Displaying live activities in iOS 16
Oh and I am still waiting on that keyboard…
Runway
Put your mobile releases on autopilot and keep the whole team in sync throughout. More info on runway.team
Lead Software Developer
Learn best practices for being a great lead software developer.
Rate me on Apple Podcasts.
Send feedback on SpeakPipe
Or contact me on Mastodon: https://hachyderm.io/@appforce1
Support my podcast with a monthly subscription, it really helps.
My book: Being a Lead Software Developer
Welcome to AppForce1 episode 92. My name is Jeroen Leenarts and I’ve been developing software for over 20 years, developing iOS apps for over 10 years, running the Dutch CocoaHeads for over 9 years.
If you are an iOS app developer, you should listen to my podcast because I will keep you updated on interesting articles, conferences and events you might not have heard about.
In this episode I’m going to talk about:
- Swift’s print(), debugPrint(), String(reflecting:), Mirror(reflecting:) and dump()
- Side Projects: 10 Tips for being successful
- Deadlocks in Swift explained: detecting and solving
- How to manage lifecycle events in SwiftUI iOS applications
- viewDidLoad() in SwiftUI
- Why your Xcode version still matters with Module Stability
- Displaying live activities in iOS 16
Full on prep mode for Do iOS by now. What is it. Just 5 or 6 weeks remaining. When I am preparing this episode, there were just 2 tickets remaining. So we will have a full house. I was also looking into putting together a workshop the day before the conference and that has now been put together thanks to the gracious support of Jeremy Barger. You might know him as TheSwiftNomad on Twitter. He is looking for people to take a look at his Swift Developer Academy. So take a look.
The workshop is done by Daniel Steinberg. Daniel is the author of more than a dozen books including the best selling books A Swift Kickstart and Dear Elena. He has written apps for the iPhone and the iPad since the SDKs first appeared and has written programs for the Mac all the way back to System 7. Daniel presents SwiftUI, Functional Programming, and Swift training and consults through his company Dim Sum Thinking. When he's not coding or talking about coding for the Mac, the iPhone, and the iPad he's probably cooking, baking bread, or hanging out with friends.
And a nice anekdote I shared before is that Daniel and I first met at EclipseCon 2011. I was working at the Dutch Railways and was involved with building a planning system for their train planning system. It was back in the days I did Java development on the Eclipse Rich Client Platform. Think taking Xcode, taking all the bits and parts out that make it an integrated development environment and use, what's left, as a base for a new application though a pluggable system. Anyways, Daniel interviewed me on site for some kind of podcast format he was working on.
Anyways, the workshop. Over the past two years Apple has introduced their new framework for working with asynchronous code. It is well thought out but consists of so many pieces and techniques that it might feel overwhelming.
In Daniel's fast-moving, code-along workshop you will explore many of the areas of async/await and friends.
The goal is for you to get an overall idea of what is going on and how it works while briefly exploring many of the areas.
Daniel will motivate the topic with error handling in Swift and move on to async methods, the await keyword, and Tasks. You can expect examples of asynchronous sequences, notifications, url sessions, and other Apple APIs. In the end async in SwiftUI, structured concurrency, and actors will be addressed.
Tickets available.
So last week I shared a conference is simple. A space with a screen setup, speakers, food, drinks and attendees. Well it sure feels good to see those ticket numbers rising. In just 7 days over a third of the available tickets to the conference were gone.
Validation is a great thing to get. I was floored when things were were moving so fast on Thursday.
Let's get started with the articles of this week. The first one is by Jordan Morgan
Swift’s print(), debugPrint(), String(reflecting:), Mirror(reflecting:) and dump()
Jordan shows what amazing debugging tools there are available in Xcode, but then quickly he dives into what you can do with the humble print style statements. It sounds simple, but there are a few things to unpack and Jordan does a wonderful job.
Next up is a double service of Antoine van der Lee. He has one titled:
Side Projects: 10 Tips for being successful
It’s common to have a side project as an engineer since we can build our ideas. At the same time, it’s also trending to start a new project before you’ve finished the previous one. You could say there’s a graveyard of many side projects that didn’t reach the public.
While Antone is a full-time employee at WeTransfer, he still manage to maintain SwiftLee, SwiftLee Weekly, SwiftLee Jobs, RocketSim, and Stock Analyzer. You probably think he's single and living in a loft. The contrary is true: He's a dad of a 7-month-old son, he has a massive dog that needs walking, and his fiancé loves watching series with him. So how does he manage?
Antoine goes on to share 10 of his tips for doing just that.
The next article by Antoine is about
Deadlocks in Swift explained: detecting and solving
Deadlocks in Swift can make your app hang, causing a frustrating situation for both you and your users. Your app becomes unresponsive, and you can often only solve it by restarting the app. While features like actors reduce the number of deadlocks you’ll run into, there’s still a high chance of experiencing deadlocks.
Deadlocks can have several causes, and there are multiple techniques to detect them. During his 10+ years of experience, Antoine has found a way to indicate deadlocks and narrow down the root cause quickly.
The next article is by Natasha Fadeeva.
How to manage lifecycle events in SwiftUI iOS applications
When working with views in an iOS application, we often need to trigger side effects when certain lifecycle events occur - for example loading or refreshing some data when a view appears.
In UIKit, we did that by overriding methods like viewDidAppear(:) or viewDidDisappear(:).
SwiftUI also provides methods like onAppear(perform:), onDisappear(perform:) and task(priority:_:) to react to lifecycle events. Let's jump in and look at those methods in more detail.
As luck would have it Sarun wrote a related article. What is you are looking for
What is viewDidLoad() equivalent in SwiftUI
If you come from the UIKit world, you might wonder what the viewDidLoad() equivalent method in SwiftUI is.
Too bad there is no direct replacement of viewDidLoad() in SwiftUI.
The closest SwiftUI's methods we have are onAppear() and onDisappear() which is equivalents to UIKit's viewDidAppear() and viewDidDisappear().
If you really want the behavior of viewDidLoad(), you have to implement it yourself. Luckily, the process is not that hard. Sarun tells you how.
We're 5 articles down already. The 6th article is by Marco Eidinger
Why your Xcode version still matters with Module Stability
In this blog post, you learn about Swift's Module Stability and a common misconception about its compatibility with older Xcode versions:
You will know how to deal with toolchain version mismatch errors when trying to use a binary framework (.xcframework).
The final article is by Majid Jabrayilov
Displaying live activities in iOS 16
One of the most prominent features of iOS 16 is live activity widgets. iOS 16 allows us to display the live state of ongoing activities from our apps on the lock screen or in the Dynamic Island of the new iPhone 14 Pro. This week we will learn how to build live activity widgets for our apps using the new ActivityKit framework.
Outro
And that's it again for this week.
If you have any feedback, please send me a message through Twitter. My DMs are open. And don’t forget, you can buy me a coffee. Link for that in the shownotes.