From ff79e5ed22a7915a969fe604bde5e469dc171497 Mon Sep 17 00:00:00 2001 From: Vinnie Hesener Date: Tue, 26 Mar 2019 11:05:43 -0500 Subject: [PATCH 1/3] Swift 5 upgrade (#49) Upgraded Swift version to 5.0 --- Closures.podspec.json | 23 ++++++++++++++++++ Supporting/cocoapods/.swift-version | 2 +- Supporting/cocoapods/Closures.podspec.json | 4 +-- Xcode/Closures.xcodeproj/project.pbxproj | 19 +++++++++------ .../xcshareddata/xcschemes/Closures.xcscheme | 2 +- Xcode/Closures/Source/Core.swift | 2 +- Xcode/Closures/Source/UIBarButtonItem.swift | 10 ++++---- Xcode/Closures/Source/UIControl.swift | 2 +- .../Source/UIImagePickerController.swift | 2 +- .../ClosuresDemo.playground/Setup.o | Bin 0 -> 29668 bytes 10 files changed, 46 insertions(+), 20 deletions(-) create mode 100644 Closures.podspec.json create mode 100644 Xcode/Playground/ClosuresDemo.playground/Setup.o diff --git a/Closures.podspec.json b/Closures.podspec.json new file mode 100644 index 0000000..9f959cc --- /dev/null +++ b/Closures.podspec.json @@ -0,0 +1,23 @@ +{ + "name": "Closures", + "version": "0.5", + "summary": "Swifty closures for UIKit and Foundation", + "homepage": "https://github.com/vhesener/Closures", + "screenshots": [ + "https://raw.githubusercontent.com/vhesener/Closures/assets/assets/playground_general.gif", + "https://raw.githubusercontent.com/vhesener/Closures/assets/assets/reference_large.png" + ], + "license": "MIT", + "authors": "Vinnie Hesener", + "platforms": { + "ios": "9.0" + }, + "source": { + "git": "https://github.com/vhesener/Closures.git", + "tag": "v0.5" + }, + "source_files": "Xcode/Closures/Source", + "documentation_url": "https://vhesener.github.io/Closures/", + "description": "Closures is an iOS Framework that adds closure handlers to many of the popular\nUIKit and Foundation classes. Although this framework is a substitute for \nsome Cocoa Touch design patterns, such as Delegation and Data Sources, and \nTarget-Action, the authors make no claim regarding which is a better way to \naccomplish the same type of task. Most of the time it is a matter of style, \npreference, or convenience that will determine if any of these closure extensions \nare beneficial.\n\nWhether you’re a functional purist, dislike a particular API, or simply just \nwant to organize your code a little bit, you might enjoy using this library.", + "pushed_with_swift_version": "5.0" +} diff --git a/Supporting/cocoapods/.swift-version b/Supporting/cocoapods/.swift-version index 8012ebb..6e63660 100644 --- a/Supporting/cocoapods/.swift-version +++ b/Supporting/cocoapods/.swift-version @@ -1 +1 @@ -4.2 \ No newline at end of file +5.0 \ No newline at end of file diff --git a/Supporting/cocoapods/Closures.podspec.json b/Supporting/cocoapods/Closures.podspec.json index 445ab10..7528da5 100644 --- a/Supporting/cocoapods/Closures.podspec.json +++ b/Supporting/cocoapods/Closures.podspec.json @@ -1,6 +1,6 @@ { "name": "Closures", - "version": "0.5", + "version": "0.6", "summary": "Swifty closures for UIKit and Foundation", "homepage": "https://github.com/vhesener/Closures", "screenshots": [ @@ -14,7 +14,7 @@ }, "source": { "git": "https://github.com/vhesener/Closures.git", - "tag": "v0.5" + "tag": "v0.6" }, "source_files": "Xcode/Closures/Source", "documentation_url": "https://vhesener.github.io/Closures/", diff --git a/Xcode/Closures.xcodeproj/project.pbxproj b/Xcode/Closures.xcodeproj/project.pbxproj index 49a9dd1..a6eccd1 100644 --- a/Xcode/Closures.xcodeproj/project.pbxproj +++ b/Xcode/Closures.xcodeproj/project.pbxproj @@ -202,7 +202,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0800; - LastUpgradeCheck = 0930; + LastUpgradeCheck = 1020; ORGANIZATIONNAME = "Your Mom"; TargetAttributes = { 3F7620DD1D849B5000E17BF5 = { @@ -219,10 +219,11 @@ }; buildConfigurationList = 3F7620D81D849B5000E17BF5 /* Build configuration list for PBXProject "Closures" */; compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; + developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, + Base, ); mainGroup = 3F7620D41D849B5000E17BF5; productRefGroup = 3F7620DF1D849B5000E17BF5 /* Products */; @@ -300,6 +301,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; @@ -354,7 +356,7 @@ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_TREAT_WARNINGS_AS_ERRORS = YES; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -365,6 +367,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; @@ -411,7 +414,7 @@ SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SWIFT_TREAT_WARNINGS_AS_ERRORS = YES; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -438,7 +441,7 @@ SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_SWIFT3_OBJC_INFERENCE = Off; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -460,7 +463,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_SWIFT3_OBJC_INFERENCE = Off; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; }; name = Release; }; @@ -473,7 +476,7 @@ PRODUCT_BUNDLE_IDENTIFIER = com.vhesener.ClosuresTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -486,7 +489,7 @@ PRODUCT_BUNDLE_IDENTIFIER = com.vhesener.ClosuresTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; }; name = Release; }; diff --git a/Xcode/Closures.xcodeproj/xcshareddata/xcschemes/Closures.xcscheme b/Xcode/Closures.xcodeproj/xcshareddata/xcschemes/Closures.xcscheme index 92cb476..6a00b26 100644 --- a/Xcode/Closures.xcodeproj/xcshareddata/xcschemes/Closures.xcscheme +++ b/Xcode/Closures.xcodeproj/xcshareddata/xcschemes/Closures.xcscheme @@ -1,6 +1,6 @@ : delegates: inout Set>, bind: (_ delegator: Delegator, _ delegate: Delegate) -> Void, with updateHandler: (_ wrapper: DelegateWrapper) -> Void) { - let wrapper = self.wrapper(delegator: delegator, delegate: delegate, delegates: &delegates, bind: bind) + let wrapper = self.wrapper(delegator: delegator, delegate: delegate(), delegates: &delegates, bind: bind) updateHandler(wrapper) bind(delegator, wrapper.delegate) } diff --git a/Xcode/Closures/Source/UIBarButtonItem.swift b/Xcode/Closures/Source/UIBarButtonItem.swift index 9a0f1c4..57df48f 100644 --- a/Xcode/Closures/Source/UIBarButtonItem.swift +++ b/Xcode/Closures/Source/UIBarButtonItem.swift @@ -33,7 +33,7 @@ public extension UIBarButtonItem { * parameter style: The `UIBarButtonItemStyle` of the button * parameter handler: The closure that is called when the button is tapped */ - public convenience init(image: UIImage?, style: UIBarButtonItem.Style, handler: @escaping () -> Void) { + convenience init(image: UIImage?, style: UIBarButtonItem.Style, handler: @escaping () -> Void) { self.init(image: image, style: style, target: nil, action: nil) onTap(handler: handler) } @@ -49,7 +49,7 @@ public extension UIBarButtonItem { * parameter handler: The closure that is called when the button is tapped */ @available(iOS 5.0, *) - public convenience init(image: UIImage?, landscapeImagePhone: UIImage?, style: UIBarButtonItem.Style, handler: @escaping () -> Void) { + convenience init(image: UIImage?, landscapeImagePhone: UIImage?, style: UIBarButtonItem.Style, handler: @escaping () -> Void) { self.init(image: image, landscapeImagePhone: landscapeImagePhone, style: style, target: nil, action: nil) onTap(handler: handler) } @@ -63,7 +63,7 @@ public extension UIBarButtonItem { * parameter style: The `UIBarButtonItemStyle` of the button * parameter handler: The closure that is called when the button is tapped */ - public convenience init(title: String?, style: UIBarButtonItem.Style, handler: @escaping () -> Void) { + convenience init(title: String?, style: UIBarButtonItem.Style, handler: @escaping () -> Void) { self.init(title: title, style: style, target: nil, action: nil) onTap(handler: handler) } @@ -76,7 +76,7 @@ public extension UIBarButtonItem { * parameter barButtonSystemItem: The `UIBarButtonSystemItem` to be used for the button * parameter handler: The closure that is called when the button is tapped */ - public convenience init(barButtonSystemItem systemItem: UIBarButtonItem.SystemItem, handler: @escaping () -> Void) { + convenience init(barButtonSystemItem systemItem: UIBarButtonItem.SystemItem, handler: @escaping () -> Void) { self.init(barButtonSystemItem: systemItem, target: nil, action: nil) onTap(handler: handler) } @@ -98,7 +98,7 @@ public extension UIBarButtonItem { * parameter handler: The closure that will be called when the tap is recognized. */ - public func onTap(handler: @escaping () -> Void) { + func onTap(handler: @escaping () -> Void) { target = self action = #selector(UIBarButtonItem.buttonTapped) NotificationCenter.selfObserve(name: .barButtonItemTapped, target: self) { button, userInfo in diff --git a/Xcode/Closures/Source/UIControl.swift b/Xcode/Closures/Source/UIControl.swift index 0fb831a..50a6b92 100644 --- a/Xcode/Closures/Source/UIControl.swift +++ b/Xcode/Closures/Source/UIControl.swift @@ -21,7 +21,7 @@ import UIKit fileprivate extension UIControl { - fileprivate func _onChange( + func _onChange( callerHandler: @escaping (_ value: ValueType) -> (Void), valueHandler: @escaping (_ control: ControlType) -> (ValueType)) { on(.valueChanged) { control, _ in diff --git a/Xcode/Closures/Source/UIImagePickerController.swift b/Xcode/Closures/Source/UIImagePickerController.swift index 62e38f4..e1e145b 100644 --- a/Xcode/Closures/Source/UIImagePickerController.swift +++ b/Xcode/Closures/Source/UIImagePickerController.swift @@ -325,7 +325,7 @@ extension UIImagePickerController.MediaFilter: ExpressibleByIntegerLiteral { } fileprivate extension CFString { - fileprivate var mediaFilter: UIImagePickerController.MediaFilter { + var mediaFilter: UIImagePickerController.MediaFilter { switch self { case kUTTypeImage: return .image diff --git a/Xcode/Playground/ClosuresDemo.playground/Setup.o b/Xcode/Playground/ClosuresDemo.playground/Setup.o new file mode 100644 index 0000000000000000000000000000000000000000..2672ff0c3e60016dfe92ebddb5e5b58be2bb3849 GIT binary patch literal 29668 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 literal 0 HcmV?d00001 From 9423f896b7819433d5df8806baa551f65a1e2fa0 Mon Sep 17 00:00:00 2001 From: Vinnie Hesener Date: Tue, 26 Mar 2019 11:07:01 -0500 Subject: [PATCH 2/3] Updated podspec --- Closures.podspec.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Closures.podspec.json b/Closures.podspec.json index 9f959cc..f6095f0 100644 --- a/Closures.podspec.json +++ b/Closures.podspec.json @@ -1,6 +1,6 @@ { "name": "Closures", - "version": "0.5", + "version": "0.6", "summary": "Swifty closures for UIKit and Foundation", "homepage": "https://github.com/vhesener/Closures", "screenshots": [ @@ -14,7 +14,7 @@ }, "source": { "git": "https://github.com/vhesener/Closures.git", - "tag": "v0.5" + "tag": "v0.6" }, "source_files": "Xcode/Closures/Source", "documentation_url": "https://vhesener.github.io/Closures/", From c8242ca7fdc9e396204f46cfca9b29258bb4c553 Mon Sep 17 00:00:00 2001 From: Vinnie Hesener Date: Fri, 21 Jun 2019 22:09:33 -0500 Subject: [PATCH 3/3] Version support description changed --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 35eb425..e37242c 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Whether you're a functional purist, dislike a particular API, or simply just want to organize your code a little bit, you might enjoy using this library. > ***note***
-> `Closures` currently only supports projects written in **Swift 4.0**+. +> `Closures` currently only supports projects written in **Swift 5.0**+. *** ## [Usage Overview](#usage-overview)