Reference Cycles in Closures
Time to add an accountant class that will keep track of a Person’s net worth. Create a new Swift file called Accountant.swift and define your new class.
Listing 24.9 Defining an Accountant
(Accountant.swift
)
import Foundation class Accountant { typealias NetWorthChanged = (Double) -> Void var netWorthChangedHandler: NetWorthChanged? = nil var netWorth: Double = 0.0 { didSet { netWorthChangedHandler?(netWorth) } } func gained(_ asset: Asset) { netWorth += asset.value } }
Accountant defines a typealias, NetWorthChanged, which is a closure that takes a Double (the new net worth value) and returns nothing. It has two properties: netWorthChangedHandler, which is an optional closure to call when the ...
Get Swift Programming: The Big Nerd Ranch Guide now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.