2016-02-25 3 views
-1

Я работаю на таймер обратного отсчета для моего приложения, который начинает обратный отсчет от 15. Это мой код:Ошибка Swift Signal SIGABRT во время таймера обратного отсчета?

// 


import UIKit 

class ViewController2: UIViewController { 
    @IBOutlet weak var Timer: UILabel! 


    var countd = 15 








// 
// 
    override func viewDidLoad() { 

    super.viewDidLoad() 
    let time = NSTimer(timeInterval: 1.0, target: self, selector: "updateCounter", userInfo: nil, repeats: true) 
    Timer.text = String(countd) 
NSRunLoop.mainRunLoop().addTimer(time, forMode: NSDefaultRunLoopMode) 

    } 

    func updateCounter(timer: NSTimer) { 


     Timer.text = String(countd) 

     if (countd > 0){ 

      Timer.text = String(countd--) 
      Timer.text = String(countd) 
     } 

    } 





     // Do any additional setup after loading the view. 


    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


    /* 
    // MARK: - Navigation 

    // In a storyboard-based application, you will often want to do a little preparation before navigation 
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     // Get the new view controller using segue.destinationViewController. 
     // Pass the selected object to the new view controller. 
    } 
    */ 

} 

Однако, когда я запускаю его, как только я получаю к части с I таймера см. этикетку flash 15 на секунду, но затем она сразу же падает с ошибкой SIGABRT. Что я могу сделать?

ответ

0

Изменить

selector: "updateCounter" 

в

selector: "updateCounter:" 

Пожалуйста, обратите внимание, что в Swift 2.2 будет трудно сделать эту ошибку (компилятор предупредит), и в Swift 3 станет невозможным (синтаксис синтаксиса строки будет запрещен). Возможно, вы захотите обновить до Swift 2.2 сейчас, если вы не понимаете синтаксис синтаксиса строкового литерала.