[解決済み] NSTimerの使い方を教えてください。
質問
を使用するにはどうすればよいのでしょうか?
NSTimer
? どなたか、ステップバイステップで教えていただけませんか?
どのように解決するのですか?
まず最初に、Cocoa/CFのドキュメントに注目していただきたいと思います(これは常に、最初に呼び出すべき素晴らしいポートです)。Appleのドキュメントには、各参考記事の上部に"Companion Guides"というセクションがあり、ドキュメント対象のトピックに関するガイドが(存在すれば)リストアップされています。例えば
NSTimer
,
ドキュメント
には、2冊のコンパニオンガイドが掲載されています。
スレッドのトピックは関連性がありますが、ドキュメント化されているクラスには直接関係ありません。Timer Programming Topicsの記事を見ると、2つのパートに分かれています。
- タイマ
- タイマーを使う
このような形式の記事では、クラスの概要とその用途について説明し、その後に どのように この場合は、「タイマーを使う」のセクションで説明しています。タイマーの作成とスケジューリング」「タイマーの停止」「メモリ管理」のセクションがあります。この記事から、スケジュールされた繰り返しのないタイマーを作成するには、次のようにします。
[NSTimer scheduledTimerWithTimeInterval:2.0
target:self
selector:@selector(targetMethod:)
userInfo:nil
repeats:NO];
これは、2.0秒後に起動するタイマーを作成し、そのタイマーから
targetMethod:
で
self
へのポインタを1つの引数として与えます。
NSTimer
のインスタンスです。
もし、このメソッドについてもっと詳しく知りたい場合は、ドキュメントを参照すればよいのですが、コードの周りにも説明があります。
繰り返しのタイマーを停止したい場合(または、非繰り返しタイマーを起動前に停止したい場合)には、タイマーを停止させるためのポインタを
NSTimer
多くの場合、これはインスタンス変数にする必要があり、別のメソッドでそれを参照できるようにします。そうすると
invalidate
の上で
NSTimer
のインスタンスを作成します。
[myTimer invalidate];
myTimer = nil;
また、次のようにするのもよい方法です。
nil
に設定されていない場合、インスタンス変数をアウトにします (たとえば、タイマーを無効にするメソッドが複数回呼び出され、インスタンス変数が
nil
と、その
NSTimer
のインスタンスが解放されている場合は、例外をスローします)。
また、記事末尾の「メモリ管理」のポイントにもご注目ください。
<ブロッククオートランループがタイマーを維持するため、メモリ管理の観点から タイマーをスケジュールした後は、通常、タイマーへの参照を保持する必要はありません。 . タイマーのメソッドをセレクタで指定すると引数として渡されるため。 そのメソッド内で適切なタイミングでリピータータイマーを無効化することができます。 . しかし、多くの場合、タイマーを無効化するオプションが必要です(おそらく、タイマーが開始する前でも)。 この場合、タイマーへの参照を保持し、適切なタイミングで無効化メッセージを送信できるようにする必要があります。 . 非スケジュール型タイマーを作成する場合(「非スケジュール型タイマー」を参照)、タイマーへの強い参照を維持し(参照カウントの環境では、それを保持し)、使用前にタイマーの割り当てが解除されないようにする必要があります。
関連
-
[解決済み】Xcode - 'NSUnknownKeyException', reason: ... this class is not key value coding-compliant for the key X" エラーの修正方法とは?
-
[解決済み] iOSまたはmacOSで、インターネット接続が有効かどうかを確認するにはどうすればよいですか?
-
[解決済み] カスタムオブジェクトを含むNSMutableArrayをソートするにはどうすればよいですか?
-
[解決済み] performSelectorのセレクタが不明なため、リークが発生する可能性があります。
-
[解決済み] Objective-Cで、ある文字列が他の文字列を含んでいるかどうかを調べるにはどうすればよいですか?
-
[解決済み] SwiftからObjective-Cのコードを呼び出すにはどうしたらいいですか?
-
[解決済み] iOSのバージョンを確認する方法を教えてください。
-
[解決済み] Objective-Cでデリゲートを作成するにはどうしたらいいですか?
-
[解決済み] クラス vs. #インポート
-
[解決済み】NSMutableArrayから反復処理中に削除する最良の方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ターゲット・パターンに '%' が含まれていません。メイクファイル
-
[解決済み] 開発者の身元が確認できないため開けない
-
[解決済み] objectForKeyとvalueForKeyの違い?
-
[解決済み] NSTimerの使い方を教えてください。
-
[解決済み】SwiftのコードをObjective-Cにインポートするにはどうすればいいですか?
-
[解決済み】メインスレッドでタスクを実行するGCD
-
[解決済み】iOS7でステータスバーを隠すことができない。
-
[解決済み】Objective-C: パス文字列からファイル名を抽出する
-
[解決済み】コンパイルの警告:アーキテクチャi386のファイルを処理するルールがない
-
[解決済み】NSMutableArrayから反復処理中に削除する最良の方法は?