From bf78897a3a79089e6170c303ae4194f82a92e1df Mon Sep 17 00:00:00 2001 From: Ilan Ben Tal Date: Sun, 11 Feb 2018 14:52:23 +0200 Subject: [PATCH 1/6] Added: repeat for X number of times --- Sources/SwiftyTimer.swift | 78 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 72 insertions(+), 6 deletions(-) diff --git a/Sources/SwiftyTimer.swift b/Sources/SwiftyTimer.swift index 519e720..72a0205 100644 --- a/Sources/SwiftyTimer.swift +++ b/Sources/SwiftyTimer.swift @@ -23,10 +23,36 @@ // import Foundation +import ObjectiveC extension Timer { -// MARK: Schedule timers + // MARK: Schedule timers + + private struct AssociatedKeys { + static var repeatCounterAddress = "repeat_counter_address" + static var numberOfRepeatsAddress = "number_of_repeats_address" + } + + private var repeatCounter: Int { + get { + return objc_getAssociatedObject(self, &AssociatedKeys.repeatCounterAddress) as? Int ?? 0 + } + set { + + objc_setAssociatedObject(self, + &AssociatedKeys.repeatCounterAddress, + newValue, + .OBJC_ASSOCIATION_RETAIN) + } + } + + public class func every(_ interval: TimeInterval, `for` times: Int, _ block: @escaping (Timer) -> Void) -> Timer { + + let timer = Timer.new(every: interval, for: times, block) + timer.start() + return timer + } /// Create and schedule a timer that will call `block` once after the specified time. @@ -56,14 +82,14 @@ extension Timer { return timer } -// MARK: Create timers without scheduling + // MARK: Create timers without scheduling /// Create a timer that will call `block` once after the specified time. /// /// - Note: The timer won't fire until it's scheduled on the run loop. /// Use `NSTimer.after` to create and schedule a timer in one step. /// - Note: The `new` class function is a workaround for a crashing bug when using convenience initializers (rdar://18720947) - + public class func new(after interval: TimeInterval, _ block: @escaping () -> Void) -> Timer { return CFRunLoopTimerCreateWithHandler(kCFAllocatorDefault, CFAbsoluteTimeGetCurrent() + interval, 0, 0, 0) { _ in block() @@ -75,13 +101,32 @@ extension Timer { /// - Note: The timer won't fire until it's scheduled on the run loop. /// Use `NSTimer.every` to create and schedule a timer in one step. /// - Note: The `new` class function is a workaround for a crashing bug when using convenience initializers (rdar://18720947) - + public class func new(every interval: TimeInterval, _ block: @escaping () -> Void) -> Timer { return CFRunLoopTimerCreateWithHandler(kCFAllocatorDefault, CFAbsoluteTimeGetCurrent() + interval, interval, 0, 0) { _ in block() } } + @nonobjc public class func new(every interval: TimeInterval, `for` times: Int, _ block: @escaping () -> Void) -> Timer { + var timer: Timer! + + timer = CFRunLoopTimerCreateWithHandler(kCFAllocatorDefault, CFAbsoluteTimeGetCurrent() + interval, interval, 0, 0) { _ in + + if times > 0 { + if timer.repeatCounter == times { + timer.invalidate() + return + } else { + timer.repeatCounter += 1 + } + } + + block() + } + return timer + } + /// Create a timer that will call `block` repeatedly in specified time intervals. /// (This variant also passes the timer instance to the block) /// @@ -89,6 +134,25 @@ extension Timer { /// Use `NSTimer.every` to create and schedule a timer in one step. /// - Note: The `new` class function is a workaround for a crashing bug when using convenience initializers (rdar://18720947) + @nonobjc public class func new(every interval: TimeInterval, `for` times: Int, _ block: @escaping (Timer) -> Void) -> Timer { + var timer: Timer! + + timer = CFRunLoopTimerCreateWithHandler(kCFAllocatorDefault, CFAbsoluteTimeGetCurrent() + interval, interval, 0, 0) { _ in + + if times > 0 { + if timer.repeatCounter == times { + timer.invalidate() + return + } else { + timer.repeatCounter += 1 + } + } + + block(timer) + } + return timer + } + @nonobjc public class func new(every interval: TimeInterval, _ block: @escaping (Timer) -> Void) -> Timer { var timer: Timer! timer = CFRunLoopTimerCreateWithHandler(kCFAllocatorDefault, CFAbsoluteTimeGetCurrent() + interval, interval, 0, 0) { _ in @@ -97,7 +161,7 @@ extension Timer { return timer } -// MARK: Manual scheduling + // MARK: Manual scheduling /// Schedule this timer on the run loop /// @@ -115,7 +179,7 @@ extension Timer { // MARK: - Time extensions -extension Double { +public extension Double { public var millisecond: TimeInterval { return self / 1000 } public var milliseconds: TimeInterval { return self / 1000 } public var ms: TimeInterval { return self / 1000 } @@ -132,3 +196,5 @@ extension Double { public var day: TimeInterval { return self * 3600 * 24 } public var days: TimeInterval { return self * 3600 * 24 } } + + From 5670e8e5ff00bf1d1441976fd48aa59ee8ed3e68 Mon Sep 17 00:00:00 2001 From: Ilan Ben Tal Date: Sun, 11 Feb 2018 18:29:56 +0200 Subject: [PATCH 2/6] added: isRunning, counter callback --- Sources/SwiftyTimer.swift | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/Sources/SwiftyTimer.swift b/Sources/SwiftyTimer.swift index 72a0205..7e3563e 100644 --- a/Sources/SwiftyTimer.swift +++ b/Sources/SwiftyTimer.swift @@ -31,23 +31,29 @@ extension Timer { private struct AssociatedKeys { static var repeatCounterAddress = "repeat_counter_address" - static var numberOfRepeatsAddress = "number_of_repeats_address" + // static var isTimerRunning = "is_timer_running_address" } + private var isRunning: Bool { + get { + return isValid//objc_getAssociatedObject(self, &AssociatedKeys.isTimerRunning) as? Bool ?? false + } + } + + private var repeatCounter: Int { get { return objc_getAssociatedObject(self, &AssociatedKeys.repeatCounterAddress) as? Int ?? 0 } set { - objc_setAssociatedObject(self, &AssociatedKeys.repeatCounterAddress, newValue, - .OBJC_ASSOCIATION_RETAIN) + .OBJC_ASSOCIATION_RETAIN_NONATOMIC) } } - public class func every(_ interval: TimeInterval, `for` times: Int, _ block: @escaping (Timer) -> Void) -> Timer { + public class func every(_ interval: TimeInterval, `for` times: Int, _ block: @escaping (Timer, Int) -> Void) -> Timer { let timer = Timer.new(every: interval, for: times, block) timer.start() @@ -91,7 +97,7 @@ extension Timer { /// - Note: The `new` class function is a workaround for a crashing bug when using convenience initializers (rdar://18720947) public class func new(after interval: TimeInterval, _ block: @escaping () -> Void) -> Timer { - return CFRunLoopTimerCreateWithHandler(kCFAllocatorDefault, CFAbsoluteTimeGetCurrent() + interval, 0, 0, 0) { _ in + return CFRunLoopTimerCreateWithHandler(kCFAllocatorDefault, CFAbsoluteTimeGetCurrent() + interval, 0, 0, 0) { timer in block() } } @@ -134,7 +140,7 @@ extension Timer { /// Use `NSTimer.every` to create and schedule a timer in one step. /// - Note: The `new` class function is a workaround for a crashing bug when using convenience initializers (rdar://18720947) - @nonobjc public class func new(every interval: TimeInterval, `for` times: Int, _ block: @escaping (Timer) -> Void) -> Timer { + @nonobjc public class func new(every interval: TimeInterval, `for` times: Int, _ block: @escaping (Timer, Int) -> Void) -> Timer { var timer: Timer! timer = CFRunLoopTimerCreateWithHandler(kCFAllocatorDefault, CFAbsoluteTimeGetCurrent() + interval, interval, 0, 0) { _ in @@ -148,7 +154,7 @@ extension Timer { } } - block(timer) + block(timer, timer.repeatCounter) } return timer } @@ -175,6 +181,7 @@ extension Timer { runLoop.add(self, forMode: mode) } } + } // MARK: - Time extensions @@ -197,4 +204,3 @@ public extension Double { public var days: TimeInterval { return self * 3600 * 24 } } - From e278e4896fdbd288ea59475dbf2f186b375561a9 Mon Sep 17 00:00:00 2001 From: Ilan Ben Tal Date: Sun, 11 Feb 2018 18:45:58 +0200 Subject: [PATCH 3/6] fix: isRunning --- Sources/SwiftyTimer.swift | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/Sources/SwiftyTimer.swift b/Sources/SwiftyTimer.swift index 7e3563e..6f7be73 100644 --- a/Sources/SwiftyTimer.swift +++ b/Sources/SwiftyTimer.swift @@ -31,12 +31,18 @@ extension Timer { private struct AssociatedKeys { static var repeatCounterAddress = "repeat_counter_address" - // static var isTimerRunning = "is_timer_running_address" + static var isTimerRunning = "is_timer_running_address" } - private var isRunning: Bool { + public var isRunning: Bool { get { - return isValid//objc_getAssociatedObject(self, &AssociatedKeys.isTimerRunning) as? Bool ?? false + return isValid && objc_getAssociatedObject(self, &AssociatedKeys.isTimerRunning) as? Bool ?? false + } + set { + objc_setAssociatedObject(self, + &AssociatedKeys.isTimerRunning, + newValue, + .OBJC_ASSOCIATION_RETAIN_NONATOMIC) } } @@ -98,6 +104,7 @@ extension Timer { public class func new(after interval: TimeInterval, _ block: @escaping () -> Void) -> Timer { return CFRunLoopTimerCreateWithHandler(kCFAllocatorDefault, CFAbsoluteTimeGetCurrent() + interval, 0, 0, 0) { timer in + (timer as! Timer).isRunning = false block() } } @@ -120,12 +127,11 @@ extension Timer { timer = CFRunLoopTimerCreateWithHandler(kCFAllocatorDefault, CFAbsoluteTimeGetCurrent() + interval, interval, 0, 0) { _ in if times > 0 { - if timer.repeatCounter == times { + if timer.repeatCounter == (times-1) { timer.invalidate() - return - } else { - timer.repeatCounter += 1 } + timer.repeatCounter += 1 + } block() @@ -146,12 +152,12 @@ extension Timer { timer = CFRunLoopTimerCreateWithHandler(kCFAllocatorDefault, CFAbsoluteTimeGetCurrent() + interval, interval, 0, 0) { _ in if times > 0 { - if timer.repeatCounter == times { + if timer.repeatCounter == (times-1) { timer.invalidate() - return - } else { - timer.repeatCounter += 1 } + + timer.repeatCounter += 1 + } block(timer, timer.repeatCounter) @@ -175,6 +181,7 @@ extension Timer { /// Specify `runLoop` or `modes` to override these defaults. public func start(runLoop: RunLoop = .current, modes: RunLoopMode...) { + isRunning = true let modes = modes.isEmpty ? [.defaultRunLoopMode] : modes for mode in modes { From e2432a63ad0ca70430f264c5285346d911a1e953 Mon Sep 17 00:00:00 2001 From: Ilan Ben Tal Date: Sun, 11 Feb 2018 21:17:20 +0200 Subject: [PATCH 4/6] swift 4 --- SwiftyTimer.xcodeproj/project.pbxproj | 24 +++++++++++++++---- .../xcschemes/SwiftyTimer OS X.xcscheme | 4 +++- .../xcschemes/SwiftyTimer tvOS.xcscheme | 4 +++- .../xcschemes/SwiftyTimer watchOS.xcscheme | 4 +++- .../xcschemes/SwiftyTimer.xcscheme | 4 +++- 5 files changed, 32 insertions(+), 8 deletions(-) diff --git a/SwiftyTimer.xcodeproj/project.pbxproj b/SwiftyTimer.xcodeproj/project.pbxproj index 70f8d1b..704d9e4 100644 --- a/SwiftyTimer.xcodeproj/project.pbxproj +++ b/SwiftyTimer.xcodeproj/project.pbxproj @@ -205,12 +205,12 @@ 3E721AB21BF7255C008AF027 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0800; + LastUpgradeCheck = 0920; ORGANIZATIONNAME = "Radosław Pietruszewski"; TargetAttributes = { 3E721ABA1BF7255D008AF027 = { CreatedOnToolsVersion = 7.1; - LastSwiftMigration = 0800; + LastSwiftMigration = 0920; }; 6E7E40891C84B1A20030CEBB = { CreatedOnToolsVersion = 7.2; @@ -318,14 +318,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; @@ -355,7 +361,7 @@ ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -370,14 +376,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; @@ -400,7 +412,7 @@ MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -425,6 +437,8 @@ PRODUCT_BUNDLE_IDENTIFIER = io.radex.SwiftyTimer; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SWIFT_SWIFT3_OBJC_INFERENCE = On; + SWIFT_VERSION = 4.0; }; name = Debug; }; @@ -445,6 +459,8 @@ PRODUCT_BUNDLE_IDENTIFIER = io.radex.SwiftyTimer; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SWIFT_SWIFT3_OBJC_INFERENCE = On; + SWIFT_VERSION = 4.0; }; name = Release; }; diff --git a/SwiftyTimer.xcodeproj/xcshareddata/xcschemes/SwiftyTimer OS X.xcscheme b/SwiftyTimer.xcodeproj/xcshareddata/xcschemes/SwiftyTimer OS X.xcscheme index fd51c27..8abea85 100644 --- a/SwiftyTimer.xcodeproj/xcshareddata/xcschemes/SwiftyTimer OS X.xcscheme +++ b/SwiftyTimer.xcodeproj/xcshareddata/xcschemes/SwiftyTimer OS X.xcscheme @@ -1,6 +1,6 @@ @@ -36,6 +37,7 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + language = "" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" diff --git a/SwiftyTimer.xcodeproj/xcshareddata/xcschemes/SwiftyTimer tvOS.xcscheme b/SwiftyTimer.xcodeproj/xcshareddata/xcschemes/SwiftyTimer tvOS.xcscheme index 036a2ac..6ac8788 100644 --- a/SwiftyTimer.xcodeproj/xcshareddata/xcschemes/SwiftyTimer tvOS.xcscheme +++ b/SwiftyTimer.xcodeproj/xcshareddata/xcschemes/SwiftyTimer tvOS.xcscheme @@ -1,6 +1,6 @@ @@ -36,6 +37,7 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + language = "" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" diff --git a/SwiftyTimer.xcodeproj/xcshareddata/xcschemes/SwiftyTimer watchOS.xcscheme b/SwiftyTimer.xcodeproj/xcshareddata/xcschemes/SwiftyTimer watchOS.xcscheme index 31dc3e3..8ff992d 100644 --- a/SwiftyTimer.xcodeproj/xcshareddata/xcschemes/SwiftyTimer watchOS.xcscheme +++ b/SwiftyTimer.xcodeproj/xcshareddata/xcschemes/SwiftyTimer watchOS.xcscheme @@ -1,6 +1,6 @@ @@ -36,6 +37,7 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + language = "" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" diff --git a/SwiftyTimer.xcodeproj/xcshareddata/xcschemes/SwiftyTimer.xcscheme b/SwiftyTimer.xcodeproj/xcshareddata/xcschemes/SwiftyTimer.xcscheme index 897a69b..7ecdb7d 100644 --- a/SwiftyTimer.xcodeproj/xcshareddata/xcschemes/SwiftyTimer.xcscheme +++ b/SwiftyTimer.xcodeproj/xcshareddata/xcschemes/SwiftyTimer.xcscheme @@ -1,6 +1,6 @@ @@ -36,6 +37,7 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + language = "" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" From 3ca36cde48ae64067df67aaccb617b07e6b61588 Mon Sep 17 00:00:00 2001 From: Ilan Ben Tal Date: Sun, 6 May 2018 10:56:07 +0300 Subject: [PATCH 5/6] settings --- SwiftyTimer.xcodeproj/project.pbxproj | 6 +++++- .../xcshareddata/xcschemes/SwiftyTimer OS X.xcscheme | 4 +--- .../xcshareddata/xcschemes/SwiftyTimer tvOS.xcscheme | 4 +--- .../xcshareddata/xcschemes/SwiftyTimer watchOS.xcscheme | 4 +--- .../xcshareddata/xcschemes/SwiftyTimer.xcscheme | 4 +--- 5 files changed, 9 insertions(+), 13 deletions(-) diff --git a/SwiftyTimer.xcodeproj/project.pbxproj b/SwiftyTimer.xcodeproj/project.pbxproj index 704d9e4..6e4dc0d 100644 --- a/SwiftyTimer.xcodeproj/project.pbxproj +++ b/SwiftyTimer.xcodeproj/project.pbxproj @@ -205,7 +205,7 @@ 3E721AB21BF7255C008AF027 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0920; + LastUpgradeCheck = 0930; ORGANIZATIONNAME = "Radosław Pietruszewski"; TargetAttributes = { 3E721ABA1BF7255D008AF027 = { @@ -322,12 +322,14 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = 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_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; @@ -380,12 +382,14 @@ CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = 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_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; diff --git a/SwiftyTimer.xcodeproj/xcshareddata/xcschemes/SwiftyTimer OS X.xcscheme b/SwiftyTimer.xcodeproj/xcshareddata/xcschemes/SwiftyTimer OS X.xcscheme index 8abea85..46b8884 100644 --- a/SwiftyTimer.xcodeproj/xcshareddata/xcschemes/SwiftyTimer OS X.xcscheme +++ b/SwiftyTimer.xcodeproj/xcshareddata/xcschemes/SwiftyTimer OS X.xcscheme @@ -1,6 +1,6 @@ @@ -37,7 +36,6 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - language = "" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" diff --git a/SwiftyTimer.xcodeproj/xcshareddata/xcschemes/SwiftyTimer tvOS.xcscheme b/SwiftyTimer.xcodeproj/xcshareddata/xcschemes/SwiftyTimer tvOS.xcscheme index 6ac8788..b48084b 100644 --- a/SwiftyTimer.xcodeproj/xcshareddata/xcschemes/SwiftyTimer tvOS.xcscheme +++ b/SwiftyTimer.xcodeproj/xcshareddata/xcschemes/SwiftyTimer tvOS.xcscheme @@ -1,6 +1,6 @@ @@ -37,7 +36,6 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - language = "" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" diff --git a/SwiftyTimer.xcodeproj/xcshareddata/xcschemes/SwiftyTimer watchOS.xcscheme b/SwiftyTimer.xcodeproj/xcshareddata/xcschemes/SwiftyTimer watchOS.xcscheme index 8ff992d..8cd5fca 100644 --- a/SwiftyTimer.xcodeproj/xcshareddata/xcschemes/SwiftyTimer watchOS.xcscheme +++ b/SwiftyTimer.xcodeproj/xcshareddata/xcschemes/SwiftyTimer watchOS.xcscheme @@ -1,6 +1,6 @@ @@ -37,7 +36,6 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - language = "" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" diff --git a/SwiftyTimer.xcodeproj/xcshareddata/xcschemes/SwiftyTimer.xcscheme b/SwiftyTimer.xcodeproj/xcshareddata/xcschemes/SwiftyTimer.xcscheme index 7ecdb7d..8b92393 100644 --- a/SwiftyTimer.xcodeproj/xcshareddata/xcschemes/SwiftyTimer.xcscheme +++ b/SwiftyTimer.xcodeproj/xcshareddata/xcschemes/SwiftyTimer.xcscheme @@ -1,6 +1,6 @@ @@ -37,7 +36,6 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - language = "" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" From 37ce535e2717545c69fb23e3941d046329e3358a Mon Sep 17 00:00:00 2001 From: Ilan Ben Tal Date: Wed, 6 Jun 2018 14:24:04 +0300 Subject: [PATCH 6/6] settings --- .../xcshareddata/xcschemes/SwiftyTimer OS X.xcscheme | 2 +- .../xcshareddata/xcschemes/SwiftyTimer tvOS.xcscheme | 2 +- .../xcshareddata/xcschemes/SwiftyTimer watchOS.xcscheme | 2 +- .../xcshareddata/xcschemes/SwiftyTimer.xcscheme | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/SwiftyTimer.xcodeproj/xcshareddata/xcschemes/SwiftyTimer OS X.xcscheme b/SwiftyTimer.xcodeproj/xcshareddata/xcschemes/SwiftyTimer OS X.xcscheme index 46b8884..5570b41 100644 --- a/SwiftyTimer.xcodeproj/xcshareddata/xcschemes/SwiftyTimer OS X.xcscheme +++ b/SwiftyTimer.xcodeproj/xcshareddata/xcschemes/SwiftyTimer OS X.xcscheme @@ -1,6 +1,6 @@