@@ -35,34 +35,34 @@ public protocol NSKeyValueObservingCustomization : NSObjectProtocol {
3535
3636fileprivate extension NSObject {
3737
38- @objc class func _old_unswizzled_automaticallyNotifiesObservers ( forKey key: String ? ) -> Bool {
38+ @objc class func __old_unswizzled_automaticallyNotifiesObservers ( forKey key: String ? ) -> Bool {
3939 fatalError ( " Should never be reached " )
4040 }
4141
42- @objc class func _old_unswizzled_keyPathsForValuesAffectingValue ( forKey key: String ? ) -> Set < String > {
42+ @objc class func __old_unswizzled_keyPathsForValuesAffectingValue ( forKey key: String ? ) -> Set < String > {
4343 fatalError ( " Should never be reached " )
4444 }
4545
4646}
4747
48- @objc private class _KVOKeyPathBridgeMachinery : NSObject {
48+ @objc private class __KVOKeyPathBridgeMachinery : NSObject {
4949 @nonobjc static var keyPathTable : [ String : AnyKeyPath ] = {
5050 /*
5151 Move all our methods into place. We want the following:
52- _KVOKeyPathBridgeMachinery 's automaticallyNotifiesObserversForKey:, and keyPathsForValuesAffectingValueForKey: methods replaces NSObject's versions of them
52+ __KVOKeyPathBridgeMachinery 's automaticallyNotifiesObserversForKey:, and keyPathsForValuesAffectingValueForKey: methods replaces NSObject's versions of them
5353 NSObject's automaticallyNotifiesObserversForKey:, and keyPathsForValuesAffectingValueForKey: methods replace NSObject's _old_unswizzled_* methods
54- NSObject's _old_unswizzled_* methods replace _KVOKeyPathBridgeMachinery 's methods, and are never invoked
54+ NSObject's _old_unswizzled_* methods replace __KVOKeyPathBridgeMachinery 's methods, and are never invoked
5555 */
5656 let rootClass : AnyClass = NSObject . self
57- let bridgeClass : AnyClass = _KVOKeyPathBridgeMachinery . self
57+ let bridgeClass : AnyClass = __KVOKeyPathBridgeMachinery . self
5858
5959 let dependentSel = #selector( NSObject . keyPathsForValuesAffectingValue ( forKey: ) )
6060 let rootDependentImpl = class_getClassMethod ( rootClass, dependentSel) !
6161 let bridgeDependentImpl = class_getClassMethod ( bridgeClass, dependentSel) !
6262 method_exchangeImplementations ( rootDependentImpl, bridgeDependentImpl) // NSObject <-> Us
6363
6464 let originalDependentImpl = class_getClassMethod ( bridgeClass, dependentSel) ! //we swizzled it onto this class, so this is actually NSObject's old implementation
65- let originalDependentSel = #selector( NSObject . _old_unswizzled_keyPathsForValuesAffectingValue ( forKey: ) )
65+ let originalDependentSel = #selector( NSObject . __old_unswizzled_keyPathsForValuesAffectingValue ( forKey: ) )
6666 let dummyDependentImpl = class_getClassMethod ( rootClass, originalDependentSel) !
6767 method_exchangeImplementations ( originalDependentImpl, dummyDependentImpl) // NSObject's original version <-> NSObject's _old_unswizzled_ version
6868
@@ -72,7 +72,7 @@ fileprivate extension NSObject {
7272 method_exchangeImplementations ( rootAutoImpl, bridgeAutoImpl) // NSObject <-> Us
7373
7474 let originalAutoImpl = class_getClassMethod ( bridgeClass, autoSel) ! //we swizzled it onto this class, so this is actually NSObject's old implementation
75- let originalAutoSel = #selector( NSObject . _old_unswizzled_automaticallyNotifiesObservers ( forKey: ) )
75+ let originalAutoSel = #selector( NSObject . __old_unswizzled_automaticallyNotifiesObservers ( forKey: ) )
7676 let dummyAutoImpl = class_getClassMethod ( rootClass, originalAutoSel) !
7777 method_exchangeImplementations ( originalAutoImpl, dummyAutoImpl) // NSObject's original version <-> NSObject's _old_unswizzled_ version
7878
@@ -83,62 +83,62 @@ fileprivate extension NSObject {
8383
8484 @nonobjc fileprivate static func _bridgeKeyPath( _ keyPath: AnyKeyPath ) -> String {
8585 guard let keyPathString = keyPath. _kvcKeyPathString else { fatalError ( " Could not extract a String from KeyPath \( keyPath) " ) }
86- _KVOKeyPathBridgeMachinery . keyPathTableLock. lock ( )
87- defer { _KVOKeyPathBridgeMachinery . keyPathTableLock. unlock ( ) }
88- _KVOKeyPathBridgeMachinery . keyPathTable [ keyPathString] = keyPath
86+ __KVOKeyPathBridgeMachinery . keyPathTableLock. lock ( )
87+ defer { __KVOKeyPathBridgeMachinery . keyPathTableLock. unlock ( ) }
88+ __KVOKeyPathBridgeMachinery . keyPathTable [ keyPathString] = keyPath
8989 return keyPathString
9090 }
9191
9292 @nonobjc fileprivate static func _bridgeKeyPath( _ keyPath: String ? ) -> AnyKeyPath ? {
9393 guard let keyPath = keyPath else { return nil }
94- _KVOKeyPathBridgeMachinery . keyPathTableLock. lock ( )
95- defer { _KVOKeyPathBridgeMachinery . keyPathTableLock. unlock ( ) }
96- let path = _KVOKeyPathBridgeMachinery . keyPathTable [ keyPath]
94+ __KVOKeyPathBridgeMachinery . keyPathTableLock. lock ( )
95+ defer { __KVOKeyPathBridgeMachinery . keyPathTableLock. unlock ( ) }
96+ let path = __KVOKeyPathBridgeMachinery . keyPathTable [ keyPath]
9797 return path
9898 }
9999
100100 @objc override class func automaticallyNotifiesObservers( forKey key: String ) -> Bool {
101101 //This is swizzled so that it's -[NSObject automaticallyNotifiesObserversForKey:]
102- if let customizingSelf = self as? NSKeyValueObservingCustomization . Type , let path = _KVOKeyPathBridgeMachinery . _bridgeKeyPath ( key) {
102+ if let customizingSelf = self as? NSKeyValueObservingCustomization . Type , let path = __KVOKeyPathBridgeMachinery . _bridgeKeyPath ( key) {
103103 return customizingSelf. automaticallyNotifiesObservers ( for: path)
104104 } else {
105- return self . _old_unswizzled_automaticallyNotifiesObservers ( forKey: key) //swizzled to be NSObject's original implementation
105+ return self . __old_unswizzled_automaticallyNotifiesObservers ( forKey: key) //swizzled to be NSObject's original implementation
106106 }
107107 }
108108
109109 @objc override class func keyPathsForValuesAffectingValue( forKey key: String ? ) -> Set < String > {
110110 //This is swizzled so that it's -[NSObject keyPathsForValuesAffectingValueForKey:]
111- if let customizingSelf = self as? NSKeyValueObservingCustomization . Type , let path = _KVOKeyPathBridgeMachinery . _bridgeKeyPath ( key!) {
111+ if let customizingSelf = self as? NSKeyValueObservingCustomization . Type , let path = __KVOKeyPathBridgeMachinery . _bridgeKeyPath ( key!) {
112112 let resultSet = customizingSelf. keyPathsAffectingValue ( for: path)
113113 return Set ( resultSet. lazy. map {
114114 guard let str = $0. _kvcKeyPathString else { fatalError ( " Could not extract a String from KeyPath \( $0) " ) }
115115 return str
116116 } )
117117 } else {
118- return self . _old_unswizzled_keyPathsForValuesAffectingValue ( forKey: key) //swizzled to be NSObject's original implementation
118+ return self . __old_unswizzled_keyPathsForValuesAffectingValue ( forKey: key) //swizzled to be NSObject's original implementation
119119 }
120120 }
121121}
122122
123123func _bridgeKeyPathToString( _ keyPath: AnyKeyPath ) -> String {
124- return _KVOKeyPathBridgeMachinery . _bridgeKeyPath ( keyPath)
124+ return __KVOKeyPathBridgeMachinery . _bridgeKeyPath ( keyPath)
125125}
126126
127127func _bridgeStringToKeyPath( _ keyPath: String ) -> AnyKeyPath ? {
128- return _KVOKeyPathBridgeMachinery . _bridgeKeyPath ( keyPath)
128+ return __KVOKeyPathBridgeMachinery . _bridgeKeyPath ( keyPath)
129129}
130130
131- public class NSKeyValueObservation : NSObject {
131+ public class _NSKeyValueObservation : NSObject {
132132
133133 @nonobjc weak var object : NSObject ?
134134 @nonobjc let callback : ( NSObject , NSKeyValueObservedChange < Any > ) -> Void
135135 @nonobjc let path : String
136136
137137 //workaround for <rdar://problem/31640524> Erroneous (?) error when using bridging in the Foundation overlay
138- @nonobjc static var swizzler : NSKeyValueObservation ? = {
139- let bridgeClass : AnyClass = NSKeyValueObservation . self
138+ @nonobjc static var swizzler : _NSKeyValueObservation ? = {
139+ let bridgeClass : AnyClass = _NSKeyValueObservation . self
140140 let observeSel = #selector( NSObject . observeValue ( forKeyPath: of: change: context: ) )
141- let swapSel = #selector( NSKeyValueObservation . _swizzle_me_observeValue ( forKeyPath: of: change: context: ) )
141+ let swapSel = #selector( _NSKeyValueObservation . _swizzle_me_observeValue ( forKeyPath: of: change: context: ) )
142142 let rootObserveImpl = class_getInstanceMethod ( bridgeClass, observeSel)
143143 let swapObserveImpl = class_getInstanceMethod ( bridgeClass, swapSel)
144144 method_exchangeImplementations ( rootObserveImpl, swapObserveImpl)
@@ -147,7 +147,7 @@ public class NSKeyValueObservation : NSObject {
147147
148148 fileprivate init ( object: NSObject , keyPath: AnyKeyPath , callback: @escaping ( NSObject , NSKeyValueObservedChange < Any > ) -> Void ) {
149149 path = _bridgeKeyPathToString ( keyPath)
150- let _ = NSKeyValueObservation . swizzler
150+ let _ = _NSKeyValueObservation . swizzler
151151 self . object = object
152152 self . callback = callback
153153 }
@@ -156,7 +156,7 @@ public class NSKeyValueObservation : NSObject {
156156 object? . addObserver ( self , forKeyPath: path, options: options, context: nil )
157157 }
158158
159- ///invalidate() will be called automatically when an NSKeyValueObservation is deinited
159+ ///invalidate() will be called automatically when an _NSKeyValueObservation is deinited
160160 @objc public func invalidate( ) {
161161 object? . removeObserver ( self , forKeyPath: path, context: nil )
162162 object = nil
@@ -181,13 +181,13 @@ public class NSKeyValueObservation : NSObject {
181181
182182extension _KeyValueCodingAndObserving {
183183
184- ///when the returned NSKeyValueObservation is deinited or invalidated, it will stop observing
184+ ///when the returned _NSKeyValueObservation is deinited or invalidated, it will stop observing
185185 public func observe< Value> (
186186 _ keyPath: KeyPath < Self , Value > ,
187187 options: NSKeyValueObservingOptions = [ ] ,
188188 changeHandler: @escaping ( Self , NSKeyValueObservedChange < Value > ) -> Void )
189- -> NSKeyValueObservation {
190- let result = NSKeyValueObservation ( object: self as! NSObject , keyPath: keyPath) { ( obj, change) in
189+ -> _NSKeyValueObservation {
190+ let result = _NSKeyValueObservation ( object: self as! NSObject , keyPath: keyPath) { ( obj, change) in
191191 let notification = NSKeyValueObservedChange ( kind: change. kind,
192192 newValue: change. newValue as? Value ,
193193 oldValue: change. oldValue as? Value ,
0 commit comments