私は初心者でXcode 8でSwift 3を学び、 "Eggtimer"という基本的なアプリを構築していました。以下にコードが書かれていて、timerlabel.text
がどのようにタイマーにリンクされているのかわからないが、それらの間の接続を設定していない。関係を理解したい
スターの隣に} else { timer.invalidate()
と書くことができます。labeltimer.text
はうまくいきませんが、どのように起こりますか? timer
のselector
のプロパティは何を意味しますか? 私の英語のために申し訳ありません、あなたの答えに感謝します。
class ViewController: UIViewController {
var timer = Timer()
var time = 210
func decreasetimer() {
if time > 0 {
time -= 1
timerlabel.text = String(time)
} else { //*
timerlabel.text = String(time)
}
}
@IBOutlet var timerlabel: UILabel!
@IBAction func timerstarter(_ sender: AnyObject) {
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(ViewController.processtimer), userInfo: nil, repeats: true)
}
}
コードを実行すると、タイマーは特定の時間間隔が経過するまで待ってから起動し、指定されたメッセージをターゲットオブジェクトに送信します。ここで、timeintervalは1です。targetはあなたのViewControllerオブジェクトです。メッセージはセレクタ内の関数に送信されます。 私はあなたがすでに上記を知っていると信じています。これがどのように機能するかをよく理解するために、RunLoopsのドキュメントを参照することをお勧めします。 https://developer.apple.com/reference/foundation/runloop – KrishnaCA
たとえば、 '-processtimer(:_)'メソッドの本体にいくつかの接続があるかもしれません。この現在のスニペットでは、その方法はまったく表示されません。 – holex