タイマーをバックグラウンドで実行したい。だから私はシングルトンを作りました。NSTimer scheduledTimerWithTimeInterval - ファンクションを呼び出さない
設定した5.0秒後には、timeEnded()
という関数を呼び出さないという問題があります。 Xcodeは、何か問題を解決するために、関数の前に@Objc
を追加することを提案しています。しかし、それはまだその機能を呼び出さない。何か案は?
class TimerService {
static let instance = TimerService()
var internalTimer: NSTimer?
func startTimer() {
guard internalTimer != nil else {
return print("timer already started")
}
internalTimer = NSTimer.scheduledTimerWithTimeInterval(5.0, target: self, selector: #selector(TimerService.timeEnded), userInfo: nil, repeats: false)
}
func timeEnded() {
//NSNotificationCenter.defaultCenter().postNotificationName("timerEnded", object: nil)
print("timer Ended")
}
}
は、あなたのXcodeのバージョン –
あなたはどこにでも実行ループにタイマーを追加するようにしてください?スクリーンショットではなくコードを投稿する必要があります。 –
Xcode 7.3.1 - 申し訳ありませんが、私はコードに置き換えました。私はそのループについては分かりません。しかし、それは私が持っている別の質問に関連しています:私はViewController内の 'viewDidLoad()'メソッドでタイマーを開始します。それを実行すると、コンソールに「タイマーは既に起動しています」というメッセージが表示されます。たぶんそれは問題と関係がありますか? – Quantm