diff --git a/.travis.yml b/.travis.yml index 213e22c..03733b5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,5 @@ -language: objective-c -osx_image: xcode10.1 +language: swift +osx_image: xcode10.2 env: global: - LC_CTYPE=en_US.UTF-8 @@ -17,12 +17,12 @@ env: - DESTINATION="OS=10.1,name=iPhone 7 Plus" SCHEME="$IOS_FRAMEWORK_SCHEME" RUN_TESTS="YES" POD_LINT="NO" - DESTINATION="OS=11.4,name=iPhone X" SCHEME="$IOS_FRAMEWORK_SCHEME" RUN_TESTS="YES" POD_LINT="NO" - DESTINATION="arch=x86_64" SCHEME="$OSX_FRAMEWORK_SCHEME" RUN_TESTS="YES" POD_LINT="NO" - - DESTINATION="OS=12.1,name=Apple TV 4K" SCHEME="$TVOS_FRAMEWORK_SCHEME" RUN_TESTS="YES" POD_LINT="NO" - - DESTINATION="OS=5.1,name=Apple Watch Series 4 - 44mm" SCHEME="$WATCHOS_FRAMEWORK_SCHEME" RUN_TESTS="NO" POD_LINT="NO" + - DESTINATION="OS=12.2,name=Apple TV 4K" SCHEME="$TVOS_FRAMEWORK_SCHEME" RUN_TESTS="YES" POD_LINT="NO" + - DESTINATION="OS=5.2,name=Apple Watch Series 4 - 44mm" SCHEME="$WATCHOS_FRAMEWORK_SCHEME" RUN_TESTS="NO" POD_LINT="NO" before_install: - gem install slather -N - - gem install cocoapods --pre --no-rdoc --no-ri --no-document --quiet + - gem install cocoapods --no-document --quiet script: - set -o pipefail diff --git a/Signals.podspec b/Signals.podspec index e1479c2..6588cdb 100644 --- a/Signals.podspec +++ b/Signals.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'Signals' - s.version = '6.0.1' + s.version = '6.1.0' s.license = 'MIT' s.summary = 'Elegant eventing' s.homepage = 'https://github.com/artman/Signals' @@ -11,10 +11,11 @@ Pod::Spec.new do |s| s.ios.deployment_target = '8.0' s.tvos.deployment_target = '9.0' s.watchos.deployment_target = '2.0' + s.osx.deployment_target = '10.11' s.source_files = 'Signals/Signal.swift' s.ios.source_files = 'Signals/iOS/*.swift' s.tvos.source_files = 'Signals/iOS/*.swift' - s.swift_version = '4.2' + s.swift_version = '5.0' end diff --git a/Signals.xcodeproj/project.pbxproj b/Signals.xcodeproj/project.pbxproj index b4f651f..f99e625 100644 --- a/Signals.xcodeproj/project.pbxproj +++ b/Signals.xcodeproj/project.pbxproj @@ -396,16 +396,16 @@ attributes = { LastSwiftMigration = 0700; LastSwiftUpdateCheck = 0700; - LastUpgradeCheck = 1010; + LastUpgradeCheck = 1020; ORGANIZATIONNAME = "Tuomas Artman"; TargetAttributes = { 720D11711A085314003C4361 = { CreatedOnToolsVersion = 6.1; - LastSwiftMigration = 0900; + LastSwiftMigration = 1020; }; 720D117C1A085315003C4361 = { CreatedOnToolsVersion = 6.1; - LastSwiftMigration = 0900; + LastSwiftMigration = 1020; }; 725B76B51C26558F001D04CC = { CreatedOnToolsVersion = 7.2; @@ -426,6 +426,7 @@ developmentRegion = English; hasScannedForEncodings = 0; knownRegions = ( + English, en, ); mainGroup = 720D11681A085314003C4361; @@ -594,6 +595,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -652,6 +654,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -714,6 +717,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "artman.fi.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = Signals; SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -731,6 +735,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "artman.fi.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = Signals; SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; }; name = Release; }; @@ -745,6 +750,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "artman.fi.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -755,6 +761,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "artman.fi.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; }; name = Release; }; @@ -810,6 +817,7 @@ isa = XCBuildConfiguration; buildSettings = { APPLICATION_EXTENSION_API_ONLY = YES; + CODE_SIGN_IDENTITY = ""; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -829,6 +837,7 @@ isa = XCBuildConfiguration; buildSettings = { APPLICATION_EXTENSION_API_ONLY = YES; + CODE_SIGN_IDENTITY = ""; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; diff --git a/Signals/Signal.swift b/Signals/Signal.swift index 106ec3e..9806c90 100644 --- a/Signals/Signal.swift +++ b/Signals/Signal.swift @@ -174,7 +174,7 @@ final public class Signal { } public extension Signal where T == Void { - public func fire() { + func fire() { fire(()) } } diff --git a/Signals/ios/UIBarButtonItem+Signals.swift b/Signals/ios/UIBarButtonItem+Signals.swift index 48b0a90..1d92f2a 100644 --- a/Signals/ios/UIBarButtonItem+Signals.swift +++ b/Signals/ios/UIBarButtonItem+Signals.swift @@ -13,7 +13,7 @@ import UIKit /// Extends UIBarButtonItem with signal for the action. public extension UIBarButtonItem { /// A signal that fires for each action event. - public var onAction: Signal<(Void)> { + var onAction: Signal { return getOrCreateSignal() } @@ -23,7 +23,7 @@ public extension UIBarButtonItem { static var SignalDictionaryKey = "signals_signalKey" } - private func getOrCreateSignal() -> Signal<(Void)> { + private func getOrCreateSignal() -> Signal { let key = "Action" let dictionary = getOrCreateAssociatedObject(self, associativeKey: &AssociatedKeys.SignalDictionaryKey, defaultValue: NSMutableDictionary(), policy: objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC) diff --git a/Signals/ios/UIControl+Signals.swift b/Signals/ios/UIControl+Signals.swift index 4fcb886..53a0eca 100644 --- a/Signals/ios/UIControl+Signals.swift +++ b/Signals/ios/UIControl+Signals.swift @@ -9,72 +9,72 @@ import UIKit /// Extends UIControl with signals for all ui control events. public extension UIControl { /// A signal that fires for each touch down control event. - public var onTouchDown: Signal<(Void)> { + var onTouchDown: Signal { return getOrCreateSignalForUIControlEvent(.touchDown) } /// A signal that fires for each touch down repeat control event. - public var onTouchDownRepeat: Signal<(Void)> { + var onTouchDownRepeat: Signal { return getOrCreateSignalForUIControlEvent(.touchDownRepeat) } /// A signal that fires for each touch drag inside control event. - public var onTouchDragInside: Signal<(Void)> { + var onTouchDragInside: Signal { return getOrCreateSignalForUIControlEvent(.touchDragInside) } /// A signal that fires for each touch drag outside control event. - public var onTouchDragOutside: Signal<(Void)> { + var onTouchDragOutside: Signal { return getOrCreateSignalForUIControlEvent(.touchDragOutside) } /// A signal that fires for each touch drag enter control event. - public var onTouchDragEnter: Signal<(Void)> { + var onTouchDragEnter: Signal { return getOrCreateSignalForUIControlEvent(.touchDragEnter) } /// A signal that fires for each touch drag exit control event. - public var onTouchDragExit: Signal<(Void)> { + var onTouchDragExit: Signal { return getOrCreateSignalForUIControlEvent(.touchDragExit) } /// A signal that fires for each touch up inside control event. - public var onTouchUpInside: Signal<(Void)> { + var onTouchUpInside: Signal { return getOrCreateSignalForUIControlEvent(.touchUpInside) } /// A signal that fires for each touch up outside control event. - public var onTouchUpOutside: Signal<(Void)> { + var onTouchUpOutside: Signal { return getOrCreateSignalForUIControlEvent(.touchUpOutside) } /// A signal that fires for each touch cancel control event. - public var onTouchCancel: Signal<(Void)> { + var onTouchCancel: Signal { return getOrCreateSignalForUIControlEvent(.touchCancel) } /// A signal that fires for each value changed control event. - public var onValueChanged: Signal<(Void)> { + var onValueChanged: Signal { return getOrCreateSignalForUIControlEvent(.valueChanged) } /// A signal that fires for each editing did begin control event. - public var onEditingDidBegin: Signal<(Void)> { + var onEditingDidBegin: Signal { return getOrCreateSignalForUIControlEvent(.editingDidBegin) } /// A signal that fires for each editing changed control event. - public var onEditingChanged: Signal<(Void)> { + var onEditingChanged: Signal { return getOrCreateSignalForUIControlEvent(.editingChanged) } /// A signal that fires for each editing did end control event. - public var onEditingDidEnd: Signal<(Void)> { + var onEditingDidEnd: Signal { return getOrCreateSignalForUIControlEvent(.editingDidEnd) } /// A signal that fires for each editing did end on exit control event. - public var onEditingDidEndOnExit: Signal<(Void)> { + var onEditingDidEndOnExit: Signal { return getOrCreateSignalForUIControlEvent(.editingDidEndOnExit) } @@ -100,7 +100,7 @@ public extension UIControl { .editingDidEnd: "EditingDidEnd", .editingDidEndOnExit: "EditingDidEndOnExit"] - private func getOrCreateSignalForUIControlEvent(_ event: UIControl.Event) -> Signal<(Void)> { + private func getOrCreateSignalForUIControlEvent(_ event: UIControl.Event) -> Signal { guard let key = UIControl.eventToKey[event] else { assertionFailure("Event type is not handled") return Signal()