Swift: scheduleTimerWithTimeInterval の追加引数を使用して
Swiftでは、scheduleTimerWithTimeIntervalメソッドを使用して引数を渡すことで、タイマーの呼び出しが可能です。これは、クロージャを使用することで実現できます。
タイマーに余分な引数を渡す方法を説明する例を以下に示します。
class TimerHelper {
func startTimer(withInterval interval: TimeInterval, userInfo: String) {
Timer.scheduledTimer(timeInterval: interval, target: self, selector: #selector(timerFired(_:)), userInfo: userInfo, repeats: false)
}
@objc func timerFired(_ timer: Timer) {
if let userInfo = timer.userInfo as? String {
print("Timer fired with userInfo: \(userInfo)")
}
}
}
let timerHelper = TimerHelper()
timerHelper.startTimer(withInterval: 1.0, userInfo: "Hello World")
上の例では、startTimerメソッドが時間間隔とuserInfoパラメータを受け取るTimerHelperクラスというのを定義しています。startTimerメソッドの中で、userInfoパラメータをタイマーのuserInfoプロパティとして渡して、Timer.ScheduledTimerメソッドを使用してタイマーを作成しました。
タイマーに設定した個別のタイマー処理メソッドtimerFiredを定義し、timerFiredメソッド内で、timer.userInfoから受け取った、追加で渡した引数を取得し、その引数に対応した処理を行う。
最後に、TimerHelperのインスタンスを作成し、startTimerメソッドを呼び出してタイマーを開始します。この例では、”Hello World”という文字列をuserInfoパラメータとして渡します。
タイマーが起動されるとtimerFiredメソッドは呼び出され、引数として渡された追加パラメータを出力します。例えば、結果は “タイマーが開始しました userInfo: Hello World” となります。