GitXplorerGitXplorer
r

SwiftyTimer

public
1237 stars
138 forks
10 issues

Commits

List of commits on branch master.
Unverified
7515b3b68a8b183d0fa25b34e3c7221cec556103

updated tests to Swift 4.2

aasowers1 committed 6 years ago
Unverified
fd022636346b8cafe68c719502c18c3a4f8c8f20

updated ruby version, specified Swift 4.2 in Project in addition to targets

aasowers1 committed 6 years ago
Unverified
df4fb5c24591f008819036f17c6304a4c27ebbea

updated travis.yml

aasowers1 committed 6 years ago
Unverified
f26d3c743d6a116babf48204735c557fa3fb6831

building on Swift 4.2

aasowers1 committed 6 years ago
Unverified
77325e642504ccf1d1dde022da35c384764958e7

Merge pull request #34 from adriencanterot/fix-package-manifest-file

rradex committed 8 years ago
Unverified
daad3576a64e934c4fcdfc33bb30f87ed1441777

Fix Package.swift not building

aadriencanterot committed 8 years ago

README

The README file for this repository.

SwiftyTimer

Platforms CI Status CocoaPods Carthage compatible Swift version

Modern Swifty API for NSTimer

SwiftyTimer allows you to instantly schedule delays and repeating timers using convenient closure syntax. It's time to get rid of Objective-C cruft.

Read Swifty APIs: NSTimer for more information about this project.

Usage

You can easily schedule repeating and non-repeating timers (repeats and delays) using Timer.every and Timer.after:

Timer.every(0.7.seconds) {
    statusItem.blink()
}

Timer.after(1.minute) {
    println("Are you still here?")
}

You can specify time intervals with these intuitive helpers:

100.ms
1.second
2.5.seconds
5.seconds
10.minutes
1.hour
2.days

You can pass method references instead of closures:

Timer.every(30.seconds, align)

Manual scheduling

If you want to make a timer object without scheduling, use new(after:) and new(every:):

let timer = Timer.new(every: 1.second) {
    println(self.status)
}

(This should be defined as an initializer, but a bug in Foundation prevents this)

Call start() to schedule timers created using new. You can optionally pass the run loop and run loop modes:

timer.start()
timer.start(modes: .defaultRunLoopMode, .eventTrackingRunLoopMode)

Invalidation

If you want to invalidate a repeating timer on some condition, you can take a Timer argument in the closure you pass in:

Timer.every(5.seconds) { (timer: Timer) in
    // do something
    
    if finished {
        timer.invalidate()
    }
}

Installation

Note: If you're running Swift 2, use SwiftyTimer v1.4.1

CocoaPods

If you're using CocoaPods, just add this line to your Podfile:

pod 'SwiftyTimer'

Install by running this command in your terminal:

pod install

Then import the library in all files where you use it:

import SwiftyTimer

Carthage

Just add to your Cartfile:

github "radex/SwiftyTimer"

Manually

Simply copy Sources/SwiftyTimer.swift to your Xcode project.

More like this

If you like SwiftyTimer, check out SwiftyUserDefaults, which applies the same swifty approach to NSUserDefaults.

You might also be interested in my blog posts which explain the design process behind those libraries:

Contributing

If you have comments, complaints or ideas for improvements, feel free to open an issue or a pull request.

Author and license

Radek Pietruszewski

SwiftyTimer is available under the MIT license. See the LICENSE file for more info.