     }
     
     deinit {
+        if suspended { resume() }
         dispatch_source_cancel(timer)
     }
 }

    }
    
    func resume() {
        setTimer()
        dispatch_resume(timer)
    }
    
    func suspend() {
        dispatch_suspend(timer)
    }
    
    private func setTimer() {


final class GCDTimer {
    private let timer: dispatch_source_t
    private var suspended = true
    var interval: Double {
        didSet { setTimer() }
    }
