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 new feature of Swift 5.1, the function builders, to create an extension to the 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 StopWatchApp
.
How to do it…
The goal of the app is to have a stopwatch that can be started and stopped using a button. We are going to implement the counter using three...