0

次のように NSTimer を開始すると:

@property (strong) NSTimer * messageTimer;


self.messageTimer = [NSTimer scheduledTimerWithTimeInterval:10.0
                                     target:self
                                   selector:@selector(checkForMessages)
                                   userInfo:nil
                                    repeats:YES];

別のView Controllerに切り替えても引き続き実行されますか?

私がそれをキャンセルするまで:

[messageTimer invalidate]; self. messageTimer = nil; 
4

1 に答える 1

1

はい。

さて、ここに拡張された説明があります。NSTimer最も近いNSRunLoop、つまり現在のディスパッチ ループに自身を登録します (入れ子になる場合があります)。このループは、さまざまなソースにイベントを要求し、対応するコールバックを呼び出します。

起動する時間になるNSTimerと、に戻りYESNSRunLoop渡されたコールバックが実行されます。「他の現在のView Controller」などはありません。それはすべてファーストレスポンダーとビュー階層に関するものであり、どちらも実行ループには影響しません。

于 2013-05-10T00:08:14.333 に答える