From a9d0cfeb5bc4f16f7b955bc714decf43524faae6 Mon Sep 17 00:00:00 2001 From: Yuki Nagai Date: Tue, 2 Aug 2016 21:48:01 +0900 Subject: [PATCH] Add Error extension instead of NSError for Workaround; NSError extension returns a type which conforms to Error protocol --- RxCocoa/Common/Observables/NSObject+Rx.swift | 12 ++---------- RxCocoa/Common/RxCocoa.swift | 14 ++++++++------ 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/RxCocoa/Common/Observables/NSObject+Rx.swift b/RxCocoa/Common/Observables/NSObject+Rx.swift index fcaff000..3539aa3b 100644 --- a/RxCocoa/Common/Observables/NSObject+Rx.swift +++ b/RxCocoa/Common/Observables/NSObject+Rx.swift @@ -126,10 +126,6 @@ extension NSObject { - returns: Observable sequence of object deallocating events. */ public func rx_sentMessage(_ selector: Selector) -> Observable<[AnyObject]> { - return Observable.create { _ in - return AnonymousDisposable {} - } - /* return rx_synchronized { // in case of dealloc selector replay subject behavior needs to be used if selector == deallocSelector { @@ -164,7 +160,7 @@ extension NSObject { subject.targetImplementation = targetImplementation return subject.asObservable() - }*/ + } } /** @@ -178,10 +174,6 @@ extension NSObject { - returns: Observable sequence of object deallocating events. */ public var rx_deallocating: Observable<()> { - return Observable.create { _ in - return AnonymousDisposable {} - } - /* return rx_synchronized { let subject: DeallocatingObservable @@ -210,7 +202,7 @@ extension NSObject { subject.targetImplementation = targetImplementation! return subject.asObservable() - }*/ + } } #endif } diff --git a/RxCocoa/Common/RxCocoa.swift b/RxCocoa/Common/RxCocoa.swift index 5aba2e45..28ba7add 100644 --- a/RxCocoa/Common/RxCocoa.swift +++ b/RxCocoa/Common/RxCocoa.swift @@ -296,16 +296,18 @@ let delegateNotSet = "Delegate not set" // MARK: Conversions `NSError` > `RxCocoaObjCRuntimeError` -extension NSError { +extension Error { func rxCocoaErrorForTarget(_ target: AnyObject) -> RxCocoaObjCRuntimeError { - if domain == RXObjCRuntimeErrorDomain { - let errorCode = RXObjCRuntimeError(rawValue: self.code) ?? .unknown - + let error = self as NSError + + if error.domain == RXObjCRuntimeErrorDomain { + let errorCode = RXObjCRuntimeError(rawValue: error.code) ?? .unknown + switch errorCode { case .unknown: return .unknown(target: target) case .objectMessagesAlreadyBeingIntercepted: - let isKVO = (self.userInfo[RXObjCRuntimeErrorIsKVOKey] as? NSNumber)?.boolValue ?? false + let isKVO = (error.userInfo[RXObjCRuntimeErrorIsKVOKey] as? NSNumber)?.boolValue ?? false return .objectMessagesAlreadyBeingIntercepted(target: target, interceptionMechanism: isKVO ? .kvo : .unknown) case .selectorNotImplemented: return .selectorNotImplemented(target: target) @@ -323,7 +325,7 @@ extension NSError { return .observingMessagesWithUnsupportedReturnType(target: target) } } - + return RxCocoaObjCRuntimeError.unknown(target: target) } }