@@ -38,10 +38,13 @@ public struct ObservationTracking {
38
38
}
39
39
}
40
40
41
- struct AccessList {
42
- var entries = [ ObjectIdentifier : Entry] ( )
41
+ @_spi ( SwiftUI)
42
+ public struct _AccessList : Sendable {
43
+ internal var entries = [ ObjectIdentifier : Entry] ( )
44
+
45
+ internal init ( ) { }
43
46
44
- mutating func addAccess< Subject: Observable > (
47
+ internal mutating func addAccess< Subject: Observable > (
45
48
keyPath: PartialKeyPath < Subject > ,
46
49
context: ObservationRegistrar < Subject > . Context
47
50
) {
@@ -53,13 +56,13 @@ public struct ObservationTracking {
53
56
_ apply: ( ) -> T ,
54
57
onChange: @autoclosure ( ) -> @Sendable ( ) -> Void
55
58
) -> T {
56
- var accessList : AccessList ?
57
- let result = withUnsafeMutablePointer ( to: & accessList ) { ptr in
59
+ var _AccessList : _AccessList ?
60
+ let result = withUnsafeMutablePointer ( to: & _AccessList ) { ptr in
58
61
_ThreadLocal. value = UnsafeMutableRawPointer ( ptr)
59
62
defer { _ThreadLocal. value = nil }
60
63
return apply ( )
61
64
}
62
- if let list = accessList {
65
+ if let list = _AccessList {
63
66
let state = _ManagedCriticalState ( [ ObjectIdentifier: Int] ( ) )
64
67
let onChange = onChange ( )
65
68
let values = list. entries. mapValues { $0. addObserver {
@@ -74,11 +77,11 @@ public struct ObservationTracking {
74
77
return result
75
78
}
76
79
80
+ @_spi ( SwiftUI)
77
81
public static func _installTracking(
78
- _ storage : UnsafeRawPointer ,
82
+ _ list : _AccessList ,
79
83
onChange: @escaping @Sendable ( ) -> Void
80
84
) {
81
- let list = unsafeBitCast ( storage, to: AccessList . self)
82
85
let state = _ManagedCriticalState ( [ ObjectIdentifier: Int] ( ) )
83
86
let values = list. entries. mapValues { $0. addObserver {
84
87
onChange ( )
0 commit comments