What’s New in Swift 5.8, Xcode 14.3 & iOS 16.4

Uplift iOS Interview

"Uplift iOS Interview" is a comprehensive guide to help aspiring iOS developers soar to new heights in their careers. This book is an indispensable tool for anyone looking to crack the iOS interview and impress their future employers with their technical prowess. With in-depth coverage of Swift, AutoLayout, SwiftUI, Multithreading, Memory management so on and so forth, this book is a treasure trove of knowledge for anyone looking to uplift their iOS development career.

Swift 5.8 is set to release with a host of new features and improvements, including implicit self for weak self captures, conditional compilation for attributes, and the addition of the new type StaticBigInt to the standard library.

  • Swift brings a new feature to the table with SE-0376, allowing for smooth backwards compatibility for functions, methods, and subscripts. With the new backDeployed(before: …) attribute, developers can indicate that a copy of the function should be emitted into the client, to be used at runtime when executing on an OS prior to the version identified with the before: argument. This means developers can use backDeployed to ensure the smooth functioning of their app on older versions of iOS, without compromising on newer versions. For instance, in the example below, the backDeployed attribute ensures that greet() function will be available for use on iOS versions 13.0 to 16.0.
struct HelloWorld {
  @available(iOS 13.0, *)
  @backDeployed(before: iOS 16.0)
  public func greet() {}
  • The new StaticBigInt type in SE-0368, will pave the way for adding even more integer types in the future. This update is a game-changer and will make handling larger integer types an absolute breeze.
  • SE-0372 is also bringing in some fantastic changes to Swift’s sorting functions. The update marks them as stable, ensuring that if two elements in an array are considered to be equal, they will remain in the same relative order in the sorted array. This means that they will stay together in the sorted array, maintaining their original order.
  • Are you tired of writing ‘self’ in your closures, even after capturing it weakly? Well, good news for you! With the introduction of SE-0365, you can now allow implicit self for weak self captures, after self is unwrapped.This update is a significant step towards simplifying the closure syntax and making our code more concise and readable.
  • If you’ve ever dealt with Clock existentials, you may have noticed a slight imbalance between the sleep APIs for clocks and tasks. With the introduction of SE-0374 in the latest release, we now have a solution: the addition of a new sleep(for:) method to Clock. This new method deals only with durations, not instants, making it easier to use on an existential.
  • SE-0274 introduces a new format for the #file magic identifier. Instead of using the entire path to the Swift file, the format Module/Filename (e.g., CreativeCanvas/ContentView.swift) will be used. Previously, #file contained the whole path, e.g. /Users/Ishtiak/Desktop/AppDev/CreativeCanvas/ContentView.swift. This new format is much shorter and less revealing of sensitive information.
  • Debugging with print statements is a go-to technique for many developers, and it’s now even easier to use in SwiftUI Previews with Xcode 14.3. When you use print statements in your code, the output will appear in the console for your SwiftUI Previews. To access it, simply select the “Previews” tab in the console. This enhancement makes it quicker and more convenient to debug and refine your SwiftUI code.
  • iOS 15 brought us the delightful .presentationDetents feature, giving us the ability to showcase a sheet that is not full-sized. But, unfortunately, we were unable to interact with the view behind the sheet, leaving us yearning for more. Luckily, iOS 16.4 came to our rescue with the brilliant .presentationBackgroundInteraction(.enabled) modifier, making it possible to interact with the view behind the sheet. Additionally, the update addressed the pesky issue of sheet resizing taking precedence over a scroll view embedded in the sheet. Now, with the .presentationContentInteraction(.scrolls) modifier, scrolling can take precedence over sheet resizing. Plus, the presentationBackground(:) modifier lets us make the sheet background translucent, which is fantastic! And, as if that wasn’t enough, we can now adjust the corner radius of a sheet using the .presentationCornerRadius() modifier, making our UIs even more attractive. Finally, the new .presentationCompactAdaptation(:) modifier allows us to control this behavior. These updates are bound to make many iOS developers extremely happy!

Rev Up Your iOS Skills: Take a Dynamic Learning Journey
iOS Career Boost

iOS Career Boost is the ultimate learning journey to elevate your iOS development career through a dynamic blend of visual learning, handy cheat sheets, coding practice materials, and expertly curated tips and tricks

Get Ready to Shine: Mastering the iOS Interview

Enjoying the articles? Get the inside scoop by subscribing to my newsletter.

Get access to exclusive iOS development tips, tricks, and insights when you subscribe to my newsletter. You'll also receive links to new articles, app development ideas, and an interview preparation mini book. Your email address will only be used for the purpose of sending the newsletter and will not be shared with third parties or advertisers. Rest assured that we value your privacy and will not spam your inbox.

Connect with me on

Twitter and LinkedIn and don't hesitate to reach out with any questions about this post. Thank you for reading.

If you know someone who would benefit from reading this article, please share it with them.