FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
SwiftyTimer/Src/SwiftyTimer.swift at 1.1.0 · radex/SwiftyTimer · GitHub
This repository was archived by the owner on May 1, 2026. It is now read-only.
radex
SwiftyTimer
Repository navigation
Code
Issues
6
(6)
Pull requests
4
(4)
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
SwiftyTimer
/
Src
/
SwiftyTimer.swift
Copy path
More file actions
More file actions
Latest commit
History
History
History
99 lines (82 loc) · 3.83 KB
Breadcrumbs
SwiftyTimer
/
Src
/
SwiftyTimer.swift
Copy path
File metadata and controls
99 lines (82 loc) · 3.83 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
//
// SwiftyTimer
//
// Copyright (c) 2015 Radosław Pietruszewski
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
//
import
Foundation
private
class
NSTimerActor
{
var
block
:
(
)
->
(
)
init
(
_ block
:
(
)
->
(
)
)
{
self
.
block
=
block
}
@
objc
func
fire
(
)
{
block
(
)
}
}
extension
NSTimer
{
// NOTE: `new` class functions are a workaround for a crashing bug when using convenience initializers (18720947)
/// 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.
public
class
func
new
(
after interval
:
NSTimeInterval
,
_ block
:
(
)
->
(
)
)
->
NSTimer
{
let
actor
=
NSTimerActor
(
block
)
return
self
.
init
(
timeInterval
:
interval
,
target
:
actor
,
selector
:
"
fire
"
,
userInfo
:
nil
,
repeats
:
false
)
}
/// Create a timer that will call `block` repeatedly in specified time intervals.
///
/// **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.
public
class
func
new
(
every interval
:
NSTimeInterval
,
_ block
:
(
)
->
(
)
)
->
NSTimer
{
let
actor
=
NSTimerActor
(
block
)
return
self
.
init
(
timeInterval
:
interval
,
target
:
actor
,
selector
:
"
fire
"
,
userInfo
:
nil
,
repeats
:
true
)
}
/// Create and schedule a timer that will call `block` once after the specified time.
public
class
func
after
(
interval
:
NSTimeInterval
,
_ block
:
(
)
->
(
)
)
->
NSTimer
{
let
timer
=
NSTimer
.
new
(
after
:
interval
,
block
)
timer
.
start
(
)
return
timer
}
/// Create and schedule a timer that will call `block` repeatedly in specified time intervals.
public
class
func
every
(
interval
:
NSTimeInterval
,
_ block
:
(
)
->
(
)
)
->
NSTimer
{
let
timer
=
NSTimer
.
new
(
every
:
interval
,
block
)
timer
.
start
(
)
return
timer
}
/// Schedule this timer on the run loop
///
/// By default, the timer is scheduled on the current run loop for the default mode.
/// Specify `runLoop` or `modes` to override these defaults.
public
func
start
(
runLoop
:
NSRunLoop
=
NSRunLoop
.
currentRunLoop
(
)
,
modes
:
String
...
)
{
let
modes
=
modes
.
count
!=
0
?
modes
:
[
NSDefaultRunLoopMode
]
for
mode
in
modes
{
runLoop
.
addTimer
(
self
,
forMode
:
mode
)
}
}
}
extension
Double
{
public
var
second
:
NSTimeInterval
{
return
self
}
public
var
seconds
:
NSTimeInterval
{
return
self
}
public
var
minute
:
NSTimeInterval
{
return
self
*
60
}
public
var
minutes
:
NSTimeInterval
{
return
self
*
60
}
public
var
hour
:
NSTimeInterval
{
return
self
*
3600
}
public
var
hours
:
NSTimeInterval
{
return
self
*
3600
}
}
Back
|
FazBrowse Home
|
New Git URL