Подтвердить что ты не робот

Timer.scheduledTimer swift 3 предварительной совместимости с iOS 10

Мне нужно запланировать таймер для запуска функции каждую секунду, но я вижу, что в xcode 8 beta 3 schedTimer доступен только для iOS 10. Есть ли альтернатива для использования таймера в iOS 9 или предыдущих версиях?

Timer.scheduledTimer(withTimeInterval: 1, repeats: true, block: { (timer) in print("Hi!")})
4b9b3361

Ответ 1

Решено использовать

        Timer.scheduledTimer(timeInterval: 1,
                             target: self,
                             selector: #selector(self.updateTime),
                             userInfo: nil,
                             repeats: true)

Ответ 2

Запустите таймер с помощью swift3,

var timer: Timer?

func startTimer() {

    if timer == nil {
        timer = Timer.scheduledTimer(timeInterval: 3, target: self, selector: #selector(self.loop), userInfo: nil, repeats: true)
    }
}

func stopTimer() {
    if timer != nil {
        timer?.invalidate()
        timer = nil
    }
}

func loop() {
    let liveInfoUrl = URL(string: "http://192.168.1.66/api/cloud/app/liveInfo/7777")
    let task = URLSession.shared.dataTask(with: liveInfoUrl! as URL) {data, response, error in
        guard let data = data, error == nil else { return }
        print(String(data: data, encoding: String.Encoding(rawValue: String.Encoding.utf8.rawValue)) ?? "aaaa")
    }
    task.resume()
}

Отпустите таймер, когда вы его не используете.

После запланированного цикла запуска таймер срабатывает при заданном до тех пор, пока он не будет признан недействительным. Непрерывный таймер недействителен сам сразу после его возникновения. Однако для повторяющегося таймера вы должен сам аннулировать объект таймера, вызывая его invalidate() Метод.

Ответ 3

Swift 3

func runCode(in timeInterval:TimeInterval, _ code:@escaping ()->(Void))
{
    DispatchQueue.main.asyncAfter(
        deadline: .now() + timeInterval,
        execute: code)
}

func runCode(at date:Date, _ code:@escaping ()->(Void))
{
    let timeInterval = date.timeIntervalSinceNow
    runCode(in: timeInterval, code)
}

func test()
{
    runCode(at: Date(timeIntervalSinceNow:2))
    {
        print("Hello")
    }

    runCode(in: 3.0)
    {
        print("World)")
    }
}

Ответ 4

Обновлено для быстрого 3:

Если вы хотите использовать Таймер для некоторой задержки или любой другой цели, используемой под строками кода в вашем проекте,

//функция defination:

func usedTimerForDelay()  {
    Timer.scheduledTimer(timeInterval: 0.3,
                         target: self,
                         selector: #selector(self.run(_:)),
                         userInfo: nil, 
                         repeats: false)
}

func run(_ timer: AnyObject) {
      print("Do your remaining stuff here...")

}

//вызов функции:

self.usedTimerForDelay()

ПРИМЕЧАНИЕ. - вы можете изменить временной интервал, как вы хотите.

//Наслаждайтесь кодированием..!

Ответ 5

Правильная форма:

Timer.scheduledTimer(withTimeInterval: 2, repeats: false){_ in
   "Here your code method"
}