diff --git a/RxCocoa/RxCocoa.xcodeproj/project.pbxproj b/RxCocoa/RxCocoa.xcodeproj/project.pbxproj index cabcdd15..b9c3dbe8 100644 --- a/RxCocoa/RxCocoa.xcodeproj/project.pbxproj +++ b/RxCocoa/RxCocoa.xcodeproj/project.pbxproj @@ -7,6 +7,8 @@ objects = { /* Begin PBXBuildFile section */ + C8092BB91AF5041E008D9A2C /* NSNotificationCenter+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8092BB81AF5041E008D9A2C /* NSNotificationCenter+Rx.swift */; }; + C8092BBB1AF50436008D9A2C /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C8092BBA1AF50436008D9A2C /* CoreData.framework */; }; C81553E41A98AB4A00C63152 /* RxCocoa.h in Headers */ = {isa = PBXBuildFile; fileRef = C81553E31A98AB4A00C63152 /* RxCocoa.h */; settings = {ATTRIBUTES = (Public, ); }; }; C81553EA1A98AB4A00C63152 /* RxCocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C81553DE1A98AB4A00C63152 /* RxCocoa.framework */; }; C81553F11A98AB4A00C63152 /* RxCocoaTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C81553F01A98AB4A00C63152 /* RxCocoaTests.swift */; }; @@ -39,6 +41,8 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + C8092BB81AF5041E008D9A2C /* NSNotificationCenter+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSNotificationCenter+Rx.swift"; sourceTree = ""; }; + C8092BBA1AF50436008D9A2C /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; C81553DE1A98AB4A00C63152 /* RxCocoa.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = RxCocoa.framework; sourceTree = BUILT_PRODUCTS_DIR; }; C81553E21A98AB4A00C63152 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; C81553E31A98AB4A00C63152 /* RxCocoa.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RxCocoa.h; sourceTree = ""; }; @@ -68,6 +72,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + C8092BBB1AF50436008D9A2C /* CoreData.framework in Frameworks */, C8A56BCE1AD744FD00B4673B /* RxSwift.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -83,10 +88,19 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + C8092BBC1AF504AD008D9A2C /* Frameworks */ = { + isa = PBXGroup; + children = ( + C8092BBA1AF50436008D9A2C /* CoreData.framework */, + C8A56BCD1AD744FD00B4673B /* RxSwift.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; C81553D41A98AB4A00C63152 = { isa = PBXGroup; children = ( - C8A56BCD1AD744FD00B4673B /* RxSwift.framework */, + C8092BBC1AF504AD008D9A2C /* Frameworks */, C81553E01A98AB4A00C63152 /* RxCocoa */, C81553ED1A98AB4A00C63152 /* RxCocoaTests */, C81553DF1A98AB4A00C63152 /* Products */, @@ -114,6 +128,7 @@ C81553FE1A98AC3700C63152 /* KVOObservable.swift */, C81554021A9900F700C63152 /* ControlTarget.swift */, C865B8991ACF38A0008BE3B3 /* Logging.swift */, + C8092BB81AF5041E008D9A2C /* NSNotificationCenter+Rx.swift */, ); path = RxCocoa; sourceTree = ""; @@ -280,6 +295,7 @@ C8813D9D1AD2988A0072A050 /* UIButton+Rx.swift in Sources */, C8813DA81AD298BF0072A050 /* Prefix.swift in Sources */, C8813DA01AD2988A0072A050 /* UILabel+Rx.swift in Sources */, + C8092BB91AF5041E008D9A2C /* NSNotificationCenter+Rx.swift in Sources */, C81554031A9900F700C63152 /* ControlTarget.swift in Sources */, C8813DA61AD298B20072A050 /* Observable+UI.swift in Sources */, C81553FF1A98AC3700C63152 /* KVOObservable.swift in Sources */, diff --git a/RxCocoa/RxCocoa/KVOObservable.swift b/RxCocoa/RxCocoa/KVOObservable.swift index 2c0a82bb..00b4644d 100644 --- a/RxCocoa/RxCocoa/KVOObservable.swift +++ b/RxCocoa/RxCocoa/KVOObservable.swift @@ -37,9 +37,6 @@ class KVOObserver : NSObject { } } -/** -* This class should be used from main thread only -*/ public class KVOObservable : Observable { var observer: KVOObserver! diff --git a/RxCocoa/RxCocoa/NSNotificationCenter+Rx.swift b/RxCocoa/RxCocoa/NSNotificationCenter+Rx.swift new file mode 100644 index 00000000..232882b4 --- /dev/null +++ b/RxCocoa/RxCocoa/NSNotificationCenter+Rx.swift @@ -0,0 +1,24 @@ +// +// NSNotificationCenter+Rx.swift +// RxCocoa +// +// Created by Krunoslav Zaher on 5/2/15. +// Copyright (c) 2015 Krunoslav Zaher. All rights reserved. +// + +import Foundation +import RxSwift + +extension NSNotificationCenter { + public func rx_notification(name: String, object: AnyObject?) -> Observable { + return AnonymousObservable { observer in + let nsObserver = self.addObserverForName(name, object: object, queue: nil) { notification in + observer.on(.Next(Box(notification))) + } + + return AnonymousDisposable { + self.removeObserver(nsObserver) + } + } + } +} \ No newline at end of file diff --git a/RxCocoa/RxCocoaTests/RxCocoaTests.swift b/RxCocoa/RxCocoaTests/RxCocoaTests.swift index 99b7e21e..a8f32663 100644 --- a/RxCocoa/RxCocoaTests/RxCocoaTests.swift +++ b/RxCocoa/RxCocoaTests/RxCocoaTests.swift @@ -11,26 +11,4 @@ import XCTest class RxCocoaTests: XCTestCase { - override func setUp() { - super.setUp() - // Put setup code here. This method is called before the invocation of each test method in the class. - } - - override func tearDown() { - // Put teardown code here. This method is called after the invocation of each test method in the class. - super.tearDown() - } - - func testExample() { - // This is an example of a functional test case. - XCTAssert(true, "Pass") - } - - func testPerformanceExample() { - // This is an example of a performance test case. - self.measureBlock() { - // Put the code you want to measure the time of here. - } - } - }