サーチ…
パラメーター
パラメータ | 詳細 |
---|---|
interval | タイマーを起動するのを待っている時間(秒単位)。反復タイマーでは、発火の間の時間。 |
target | selector を呼び出すオブジェクト |
selector | Swiftでは、 target 上で呼び出すメソッドを指定するSelector オブジェクト |
repeats | false 場合は、タイマーを1回だけ起動します。 true 、 interval 秒ごとにタイマーを起動しinterval 。 |
備考
NSTimer
使用すると、指定した時間が経過した後にターゲットにメッセージを送信できます。
タイマーの作成
これは、5秒後にself
のdoSomething
メソッドを呼び出すタイマーを作成します。
迅速
let timer = NSTimer.scheduledTimerWithTimeInterval(5,
target: self,
selector: Selector(doSomething()),
userInfo: nil,
repeats: false)
スウィフト3
let timer = Timer.scheduledTimer(timeInterval: 1,
target: self,
selector: #selector(doSomething()),
userInfo: nil,
repeats: true)
目標-C
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(doSomething) userInfo:nil repeats:NO];
リピートをfalse/NO
設定すると、タイマーを1回だけ発動させます。これをtrue/YES
に設定すると、手動で無効にされるまで5秒ごとに起動します。
手動でタイマーを起動する
迅速
timer.fire()
目標-C
[timer fire];
fire
メソッドを呼び出すと、NSTimerは通常スケジュールで実行していたタスクを実行します。
非繰り返しタイマーでは、タイマーが自動的に無効になります。これは、呼び出し、あるfire
時間間隔が一つだけの呼び出しになりますアップする前に。
反復タイマーでは、通常のスケジュールを中断することなくアクションを呼び出すだけです。
タイマーの無効化
迅速
timer.invalidate()
目標-C
[timer invalidate];
これにより、タイマーが起動しなくなります。 タイマーが作成されたスレッドから呼び出される必要があります。 アップルのメモを参照してください:
このメッセージは、タイマーがインストールされたスレッドから送信する必要があります。別のスレッドからこのメッセージを送信すると、タイマーに関連付けられた入力ソースが実行ループから削除されないことがあり、スレッドが正しく終了しない可能性があります。
注:一度タイマーが無効化されると、同じ無効タイマーを起動することは不可能です。その代わりに、無効化されたタイマーを再度初期化し、起動メソッドをトリガする必要があります。
タイマー周波数オプション
反復タイマーイベント
迅速
class ViewController: UIViewController {
var timer = NSTimer()
override func viewDidLoad() {
NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector(self.timerMethod()), userInfo: nil, repeats: true)
}
func timerMethod() {
print("Timer method called")
}
func endTimer() {
timer.invalidate()
}
}
スウィフト3
class ViewController: UIViewController {
var timer = Timer()
override func viewDidLoad() {
Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(self.timerMethod()), userInfo: nil, repeats: true)
}
func timerMethod() {
print("Timer method called")
}
func endTimer() {
timer.invalidate()
}
}
必要に応じて手動で無効にする必要があります。
迅速
非繰り返し遅延タイマーイベント
NSTimer.scheduledTimerWithTimeInterval(3.0, target: self, selector: Selector(self.timerMethod()), userInfo: nil, repeats: false)
スウィフト3
Timer.scheduledTimer(timeInterval: 3.0, target: self, selector: #selector(self.timerMethod()), userInfo: nil, repeats: false)
タイマーは、実行の3秒後に1回、起動されます。一度発射されると自動的に無効になります。
タイマーを使用したデータの受け渡し
タイマートリガーでいくつかのデータを渡す場合は、 userInfo
パラメーターを使用してデータを渡すことができます。
ここでは、Timerからトリガーされたメソッドにデータを渡す方法を簡単に説明します。
[ スイフト3 ]
Timer.scheduledTimer(timeInterval: 1.0, target: self, selector:#selector(iGotCall(sender:)), userInfo: ["Name": "i am iOS guy"], repeats:true)
[ 目的 - C ]
NSTimer* timer = [NSTimer scheduledTimerWithTimeInterval:1.0
target:self
selector:@selector(iGotCall:)
userInfo:@"i am iOS guy" repeats:YES];
上記のコード行は、 ["Name": "i am iOS guy"]
userInfo
。 ["Name": "i am iOS guy"]
userInfo
ます。 iGotCall
を呼び出すと、次のコードスニペットとして渡された値を取得できます。
[ スイフト3 ]
func iGotCall(sender: Timer) {
print((sender.userInfo)!)
}
[ 目的 - C ]
- (void)iGotCall:(NSTimer*)theTimer {
NSLog (@"%@", (NSString*)[theTimer userInfo]);
}