Debugging
Learn more and get better in Debugging using this list of Debugging blog posts, tutorials, tips, and tricks.
Memory consumption when loading UIImage from disk
Memory consumption can quickly increase if you load many images from the disk using UIImage. You'll generally load images from a remote address or via an asset catalog. However, you have bundled images in some cases, and you need to load them directly from a bundle path. In those cases, ...
Debugging SwiftUI views: what caused that change?
Debugging SwiftUI views is an essential skill when writing dynamic views with several redrawing triggers. Property wrappers like @State and @ObservedObject will redraw your view based on a changed value. This is often expected behavior, and things look like they should. However, in so-called Massive SwiftUI Views (MSV), there could ...
OSLog and Unified logging as recommended by Apple
OSLog is a replacement for print, and NSLog and Apple's recommended way of logging. It has different logging levels, like debugging, warning, and error logs. Altogether, it allows you to create an enriched logging experience fitting nicely in Xcode 15's new logging console. OSLog has a low-performance overhead and is ...
Master Mobile Monitoring SwiftUI AppsMonitor your app’s health with real-time insights into crash-free rates, start times, and more. Optimize performance and prevent user churn by addressing critical issues like app hangs, and ANRs. Learn how to keep your iOS app running smoothly across all devices by downloading this eBook.
Network Extension Debugging on macOS
A Network Extension on macOS allows you to create content filters, DNS proxies, and more. They integrate nicely into the system settings and are often used for applications like firewalls and VPN services. While Apple provides several sample applications like this for filtering network traffic, they don't have an excellent ...
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 ...
Flaky tests resolving using Test Repetitions in Xcode
Flaky tests can be frustrating to deal with. You're ready to open your PR until you realize your tests fail on CI while they succeeded locally. You even realize your test is succeeding when executing individually, and you're almost at a point to say, "Merging in as tests succeed locally." ...
Using Custom debug descriptions to improve debugging
Custom debug descriptions can help you debug your own custom objects, structs, errors, and other types. Whenever you print out an object you might end up with basic information that doesn't really help you solve your issue. Printing out a struct shows you all the values while you might only ...
No space left on device: Testing low storage scenarios
No space left on device is an error message that starts to show up more lately. Over the years, storage has grown from 1GB to 1TB but with technologies like iCloud, we can also see storage stopping at 64GB. On top of that, we're making more content of higher quality ...
5 Xcode breakpoints tips you might not yet know
Xcode breakpoints allow us to debug and find out solutions for nasty bugs. Without breakpoints, it would be a fun fest with a lot of print statements everywhere in your code. The basic principles of breakpoints we probably all know but there's a lot more to discover! What are breakpoints ...
Xcode Instruments usage to improve app performance
Xcode Instruments is a developer tool that comes for free with Xcode. It has a lot of useful tools to inspect and improve your app. Although it has a lot to offer, it's often an area which is a bit less known. In this blog post, I'll show you how ...
Combine debugging using operators in Swift
Combine debugging can be hard with long stack traces which don't help at all. Asynchronous callbacks follow up on each other rapidly and easily make it hard to find the root cause of an issue. It's next to the big learning curve one of the most common reasons to not ...