サーチ…


パラメーター

パラメータ詳細
interval タイマーを起動するのを待っている時間(秒単位)。反復タイマーでは、発火の間の時間。
target selectorを呼び出すオブジェクト
selector Swiftでは、 target上で呼び出すメソッドを指定するSelectorオブジェクト
repeats false場合は、タイマーを1回だけ起動します。 trueinterval秒ごとにタイマーを起動しinterval

備考

NSTimer使用すると、指定した時間が経過した後にターゲットにメッセージを送信できます。

タイマーの作成

これは、5秒後にselfdoSomethingメソッドを呼び出すタイマーを作成します。

迅速

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]);
}


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow