Book Image

An iOS Developer's Guide to SwiftUI

By : Michele Fadda
Book Image

An iOS Developer's Guide to SwiftUI

By: Michele Fadda

Overview of this book

– SwiftUI transforms Apple Platform app development with intuitive Swift code for seamless UI design. – Explore SwiftUI's declarative programming: define what the app should look like and do, while the OS handles the heavy lifting. – Hands-on approach covers SwiftUI fundamentals and often-omitted parts in introductory guides. – Progress from creating views and modifiers to intricate, responsive UIs and advanced techniques for complex apps. – Focus on new features in asynchronous programming and architecture patterns for efficient, modern app design. – Learn UIKit and SwiftUI integration, plus how to run tests for SwiftUI applications. – Gain confidence to harness SwiftUI's full potential for building professional-grade apps across Apple devices.
Table of Contents (25 chapters)
Free Chapter
1
Part 1: Simple Views
5
Part 2: Scrollable Views
8
Part 3: SwiftUI Navigation
11
Part 4: Graphics and Animation
14
Part 5: App Architecture
17
Part 6: Beyond Basics

Understanding tasks

Tasks are “units of work” that can run concurrently, and they are a higher-level abstraction over threads, queues, and similar concurrency primitives. Essentially, in Swift, a task is simply a piece of work that can run in parallel with other tasks. In contrast to threads and queues, tasks are managed by the Swift runtime and not by the operating system. This makes them more lightweight and efficient. Moreover, this allows structured concurrency to be backported by Apple to iOS 13 just by updating Xcode, as iOS 13 did not offer this feature when it was first introduced.

Beware that in the first iterations of structured concurrency, you were supposed to be able to declare a task just by using the async keyword, followed by do/catch. The async keyword followed by do/catch syntax method has been replaced with task initialization. You won’t find that in this book; if you happen to find it in old code, just replace async with an appropriate task...