Refined didSet semantics
About 2 min
Refined didSet semantics 관련
HACKING WITH SWIFT
What's new in Swift?
Refined didSet semantics | Changes in Swift 5.3
Refined didSet semantics
Available from Swift 5.3
SE-0268 (apple/swift-evolution
) adjusts the way the didSet
property observers work so that they are more efficient. This doesn’t require a code change unless you were somehow relying on the previous buggy behavior; you’ll just get a small performance improvement for free.
Internally, this change makes Swift not retrieve the previous value when setting a new value in any instance where you weren’t using the old value, and if you don’t reference oldValue
and don’t have a willSet
Swift will change your data in-place.
If you do happen to be relying on the old behavior, you can work around it simply by referencing oldValue
to trigger your custom getter, like this:
didSet {
_ = oldValue
}
Other Changes in Swift 5.3
Multi-pattern catch clauses | Changes in Swift 5.3
Multi-pattern catch clauses
Multiple trailing closures | Changes in Swift 5.3
Multiple trailing closures
Synthesized Comparable conformance for enums | Changes in Swift 5.3
Synthesized Comparable conformance for enums
self is no longer required in many places | Changes in Swift 5.3
self is no longer required in many places
Type-based program entry points | Changes in Swift 5.3
Type-based program entry points
where clauses on contextually generic declarations | Changes in Swift 5.3
where clauses on contextually generic declarations
Enum cases as protocol witnesses | Changes in Swift 5.3
Enum cases as protocol witnesses
A new Float16 type | Changes in Swift 5.3
A new Float16 type
Swift Package Manager gains binary dependencies, resources, and more | Changes in Swift 5.3
Swift Package Manager gains binary dependencies, resources, and more