From a1a46ac7cc8933136997e000cdf1f3041830b9d4 Mon Sep 17 00:00:00 2001 From: Vlad Z Date: Sat, 28 Oct 2017 18:47:28 -0400 Subject: [PATCH 1/2] swift 4 --- Regift.xcodeproj/project.pbxproj | 30 ++++++++++++++----- .../xcshareddata/xcschemes/Regift.xcscheme | 4 ++- .../xcshareddata/xcschemes/RegiftOSX.xcscheme | 4 ++- Regift/Regift.swift | 4 +-- RegiftTests/RegiftTests.swift | 4 ++- 5 files changed, 34 insertions(+), 12 deletions(-) diff --git a/Regift.xcodeproj/project.pbxproj b/Regift.xcodeproj/project.pbxproj index d7fa419..1bb9bba 100644 --- a/Regift.xcodeproj/project.pbxproj +++ b/Regift.xcodeproj/project.pbxproj @@ -291,16 +291,16 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0720; - LastUpgradeCheck = 0800; + LastUpgradeCheck = 0900; ORGANIZATIONNAME = "Matthew Palmer"; TargetAttributes = { 0E0C3BBF1A4E9A7D00325FF0 = { CreatedOnToolsVersion = 6.1.1; - LastSwiftMigration = 0800; + LastSwiftMigration = 0900; }; 0E0C3BCA1A4E9A7D00325FF0 = { CreatedOnToolsVersion = 6.1.1; - LastSwiftMigration = 0800; + LastSwiftMigration = 0900; }; DC50F2D21C82B858008518EC = { CreatedOnToolsVersion = 7.2.1; @@ -423,14 +423,20 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; @@ -475,14 +481,20 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; @@ -528,7 +540,8 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = On; + SWIFT_VERSION = 4.0; }; name = Debug; }; @@ -547,7 +560,8 @@ PRODUCT_BUNDLE_IDENTIFIER = "net.matthewpalmer.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = On; + SWIFT_VERSION = 4.0; }; name = Release; }; @@ -563,7 +577,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "net.matthewpalmer.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = On; + SWIFT_VERSION = 4.0; }; name = Debug; }; @@ -575,7 +590,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "net.matthewpalmer.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = On; + SWIFT_VERSION = 4.0; }; name = Release; }; diff --git a/Regift.xcodeproj/xcshareddata/xcschemes/Regift.xcscheme b/Regift.xcodeproj/xcshareddata/xcschemes/Regift.xcscheme index 7f11055..03b4fd8 100644 --- a/Regift.xcodeproj/xcshareddata/xcschemes/Regift.xcscheme +++ b/Regift.xcodeproj/xcshareddata/xcschemes/Regift.xcscheme @@ -1,6 +1,6 @@ URL { // Ensure the source media is a valid file. - guard asset.tracks(withMediaCharacteristic: AVMediaCharacteristicVisual).count > 0 else { + guard asset.tracks(withMediaCharacteristic: AVMediaCharacteristic.visual).count > 0 else { throw RegiftError.SourceFormatInvalid } @@ -298,7 +298,7 @@ public struct Regift { generator.generateCGImagesAsynchronously(forTimes: times, completionHandler: { (requestedTime, image, actualTime, result, error) in guard let imageRef = image , error == nil else { - print("An error occurred: \(error), image is \(image)") + dispatchError = true gifGroup.leave() return diff --git a/RegiftTests/RegiftTests.swift b/RegiftTests/RegiftTests.swift index fbf9fd3..5d2e2fc 100644 --- a/RegiftTests/RegiftTests.swift +++ b/RegiftTests/RegiftTests.swift @@ -54,7 +54,9 @@ class RegiftTests: XCTestCase { (0.. () in let frameProperties = CGImageSourceCopyPropertiesAtIndex(source!, index, nil)! as NSDictionary let gifFrameProperties = frameProperties.object(forKey: kCGImagePropertyGIFDictionary as String) - print(gifFrameProperties) + + print(gifFrameProperties ?? "") + let delayTime = (gifFrameProperties as! NSDictionary)[kCGImagePropertyGIFDelayTime as String] as! Float XCTAssertEqual(delayTime, 0.2) } From 83d2f85d0cb4c6c384df74796bf9e2c96db31aac Mon Sep 17 00:00:00 2001 From: Vlad Z Date: Sat, 28 Oct 2017 18:53:20 -0400 Subject: [PATCH 2/2] crashfix --- Regift/Regift.swift | 9 --------- 1 file changed, 9 deletions(-) diff --git a/Regift/Regift.swift b/Regift/Regift.swift index 7ce3a73..1c35852 100644 --- a/Regift/Regift.swift +++ b/Regift/Regift.swift @@ -293,14 +293,10 @@ public struct Regift { // Create a dispatch group to force synchronous behavior on an asynchronous method. let gifGroup = Group() - var dispatchError: Bool = false gifGroup.enter() generator.generateCGImagesAsynchronously(forTimes: times, completionHandler: { (requestedTime, image, actualTime, result, error) in guard let imageRef = image , error == nil else { - - dispatchError = true - gifGroup.leave() return } @@ -313,11 +309,6 @@ public struct Regift { // Wait for the asynchronous generator to finish. gifGroup.wait() - - // If there was an error in the generator, throw the error. - if dispatchError { - throw RegiftError.AddFrameToDestination - } CGImageDestinationSetProperties(destination, fileProperties as CFDictionary)