2424
2525import Foundation
2626
27- extension NSTimer {
27+ extension Timer {
2828
2929// MARK: Schedule timers
3030
3131 /// Create and schedule a timer that will call `block` once after the specified time.
3232
33- public class func after( interval: NSTimeInterval , _ block: ( ) -> Void ) -> NSTimer {
34- let timer = NSTimer . new ( after: interval, block)
33+ public class func after( _ interval: TimeInterval , _ block: ( ) -> Void ) -> Timer {
34+ let timer = Timer . new ( after: interval, block)
3535 timer. start ( )
3636 return timer
3737 }
3838
3939 /// Create and schedule a timer that will call `block` repeatedly in specified time intervals.
4040
41- public class func every( interval: NSTimeInterval , _ block: ( ) -> Void ) -> NSTimer {
42- let timer = NSTimer . new ( every: interval, block)
41+ public class func every( _ interval: TimeInterval , _ block: ( ) -> Void ) -> Timer {
42+ let timer = Timer . new ( every: interval, block)
4343 timer. start ( )
4444 return timer
4545 }
4646
4747 /// Create and schedule a timer that will call `block` repeatedly in specified time intervals.
4848 /// (This variant also passes the timer instance to the block)
4949
50- @nonobjc public class func every( interval: NSTimeInterval , _ block: NSTimer -> Void ) -> NSTimer {
51- let timer = NSTimer . new ( every: interval, block)
50+ @nonobjc public class func every( _ interval: TimeInterval , _ block: ( Timer ) -> Void ) -> Timer {
51+ let timer = Timer . new ( every: interval, block)
5252 timer. start ( )
5353 return timer
5454 }
@@ -61,7 +61,7 @@ extension NSTimer {
6161 /// Use `NSTimer.after` to create and schedule a timer in one step.
6262 /// - Note: The `new` class function is a workaround for a crashing bug when using convenience initializers (rdar://18720947)
6363
64- public class func new( after interval: NSTimeInterval , _ block: ( ) -> Void ) -> NSTimer {
64+ public class func new( after interval: TimeInterval , _ block: ( ) -> Void ) -> Timer {
6565 return CFRunLoopTimerCreateWithHandler ( kCFAllocatorDefault, CFAbsoluteTimeGetCurrent ( ) + interval, 0 , 0 , 0 ) { _ in
6666 block ( )
6767 }
@@ -73,7 +73,7 @@ extension NSTimer {
7373 /// Use `NSTimer.every` to create and schedule a timer in one step.
7474 /// - Note: The `new` class function is a workaround for a crashing bug when using convenience initializers (rdar://18720947)
7575
76- public class func new( every interval: NSTimeInterval , _ block: ( ) -> Void ) -> NSTimer {
76+ public class func new( every interval: TimeInterval , _ block: ( ) -> Void ) -> Timer {
7777 return CFRunLoopTimerCreateWithHandler ( kCFAllocatorDefault, CFAbsoluteTimeGetCurrent ( ) + interval, interval, 0 , 0 ) { _ in
7878 block ( )
7979 }
@@ -86,8 +86,8 @@ extension NSTimer {
8686 /// Use `NSTimer.every` to create and schedule a timer in one step.
8787 /// - Note: The `new` class function is a workaround for a crashing bug when using convenience initializers (rdar://18720947)
8888
89- @nonobjc public class func new( every interval: NSTimeInterval , _ block: NSTimer -> Void ) -> NSTimer {
90- var timer : NSTimer !
89+ @nonobjc public class func new( every interval: TimeInterval , _ block: ( Timer ) -> Void ) -> Timer {
90+ var timer : Timer !
9191 timer = CFRunLoopTimerCreateWithHandler ( kCFAllocatorDefault, CFAbsoluteTimeGetCurrent ( ) + interval, interval, 0 , 0 ) { _ in
9292 block ( timer)
9393 }
@@ -101,31 +101,31 @@ extension NSTimer {
101101 /// By default, the timer is scheduled on the current run loop for the default mode.
102102 /// Specify `runLoop` or `modes` to override these defaults.
103103
104- public func start( runLoop runLoop : NSRunLoop = NSRunLoop . currentRunLoop ( ) , modes: String ... ) {
105- let modes = modes. isEmpty ? [ NSDefaultRunLoopMode ] : modes
104+ public func start( runLoop: RunLoop = RunLoop . current , modes: RunLoopMode ... ) {
105+ let modes = modes. isEmpty ? [ RunLoopMode . defaultRunLoopMode ] : modes
106106
107107 for mode in modes {
108- runLoop. addTimer ( self , forMode: mode)
108+ runLoop. add ( self , forMode: mode)
109109 }
110110 }
111111}
112112
113113// MARK: - Time extensions
114114
115115extension Double {
116- public var millisecond : NSTimeInterval { return self / 1000 }
117- public var milliseconds : NSTimeInterval { return self / 1000 }
118- public var ms : NSTimeInterval { return self / 1000 }
116+ public var millisecond : TimeInterval { return self / 1000 }
117+ public var milliseconds : TimeInterval { return self / 1000 }
118+ public var ms : TimeInterval { return self / 1000 }
119119
120- public var second : NSTimeInterval { return self }
121- public var seconds : NSTimeInterval { return self }
120+ public var second : TimeInterval { return self }
121+ public var seconds : TimeInterval { return self }
122122
123- public var minute : NSTimeInterval { return self * 60 }
124- public var minutes : NSTimeInterval { return self * 60 }
123+ public var minute : TimeInterval { return self * 60 }
124+ public var minutes : TimeInterval { return self * 60 }
125125
126- public var hour : NSTimeInterval { return self * 3600 }
127- public var hours : NSTimeInterval { return self * 3600 }
126+ public var hour : TimeInterval { return self * 3600 }
127+ public var hours : TimeInterval { return self * 3600 }
128128
129- public var day : NSTimeInterval { return self * 3600 * 24 }
130- public var days : NSTimeInterval { return self * 3600 * 24 }
129+ public var day : TimeInterval { return self * 3600 * 24 }
130+ public var days : TimeInterval { return self * 3600 * 24 }
131131}
0 commit comments