Managing the memory in Combine to build a timer app
When a client subscribes to a publisher, the result should be held somewhere. Usually, it is stored in a Set
of AnyCancellable
. If the client subscribes to multiple publishers, the code is a bit repetitive: it would be better to have a way to wrap all subscriptions and put all the results in the same set.
In this recipe, we'll use a feature that was experimentally introduced in Swift 5.1 that was then promoted as part of the language in Swift 5.4, the result builders, to create an extension of Set
of AnyCancellable
, wrap all the subscriptions, and store them in the set.
In this recipe, we are going to create a StopWatch
app using three publishers: one for the deciseconds, one for the seconds, and one for the minutes.
We will also learn how to use timers in Combine.
Getting ready
Let's create a SwiftUI app called StopWatch
.
How to do it…
The goal of the app is to have a stopwatch that can be started...