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

Как проверить, работает ли NSTimer или нет в Swift?

Как проверить, работает ли NSTimer или нет в Swift. В obj-c код должен быть таким, как я предполагаю:

if (!myTimer) {
  //DO
}

Я пытаюсь установить его в Swift как это, и он показывает ошибки.

if !myTimer {
 // DO
}
4b9b3361

Ответ 1

Что я делаю (на обоих языках), чтобы сделать мой таймер слабым. Быстро это было бы слабым факультативным.

weak var myTimer: NSTimer?

Затем я создаю таймер с

myTimer = NSTimer.scheduledTimerWithTimeInterval(1,
          target: self,
          selector: "timerFired:",
          userInfo: nil,
          repeats: false)

И затем вы можете использовать

if timer == nil

чтобы узнать, работает ли он.

Чтобы остановить таймер, вы просто вызываете

myTimer?.invalidate()

В Objective-C это будет

[myTimer invalidate];

Это работает в Objective-C, потому что отправка сообщений в нулевые указатели действительна и просто ничего не делает.

Если вы не хотите использовать слабый необязательный параметр, вы можете запросить таймер, чтобы убедиться, что он работает, посмотрев на него свойство valid.

Ответ 2

Как насчет опции ниже? Вы можете видеть, работает ли это для вас.

if myTimer.valid {
}

Ответ 3

if !myTimer.valid {
    //DO
}