2009-07-20 3 views
2

私はココアで毎分機能を実行する方法があるのだろうかと思っています。私は個人的には、ユーザーが終了すると入力するようにコンテンツを保存するためにこれを使用しますが、この効果はTwitterクライアントでも使用されています。ユーザーがウィンドウを開いたままにすると、ユーザーからの入力なしでx分ごとに自動更新されます。あたかもこれが共通しているように見えますが、その言語が許す限り、私はそれについての文書を見つけることはできません。ココアで毎分機能を実行

ありがとうございました!

答えて

6

私は個人的には、ユーザーが終了すると入力するようにコンテンツを保存するためにこれを使用しますが、この効果はTwitterクライアントでも使用されています。

より良い解決策は非反復タイマーを作成する(まだ行っていないか、すでに解雇している場合)、その火の日付を設定することで、テキストビューのデリゲートこと、およびtextDidChange:に応答するだろう将来のX秒までです。その後、ユーザーは何分も入力していないときに、最大1分ではなく、X秒以下の作業を失い、タイマーは起動しません。

+0

Hey Peter: これは間違いありません。 – PF1

+0

Peter:これはうまくいくようですが、テキスト入力時にアプリケーションウィンドウが大きく遅れることがあります。これは、関数が実行されるたびにファイルをディスクに保存しているためです。私は、関数の実行ごとに新しいタイマーを作成しないようにする方法をよく知りませんでしたので、この関数ではタイマーを実装しませんでした。私はこれが私の問題を解決するだろうと思っていますが、私はこれをどうやって達成するかについてはあまりよく分かりません。何か案は? – PF1

+1

タイマーが起動したら、それを放していれば解放し、それを保持する変数を 'nil'に設定します。次に、タイマーが存在するかどうか 'textDidChange:'でテストできます。また、 'textDidChange:'から直接関数を呼び出さないでください(またはメッセージを送信しないでください)。タイマーを作成して、起動時にメッセージを送信させてください。 –

2

NSTimer docsをご覧ください。それはまさにあなたが望むものです。必要なだけ繰り返すNSTimerを作成し、指定された引数を持つ特定の関数を呼び出します。

+0

ちょっとダン: NSTimerがそうです。私は前にそのクラスを調べましたが、あなたがそれを関数として使うことができるかどうかはよく分かりませんでした。ご協力いただきありがとうございます。 – PF1

+1

NSTimerは関数を直接呼び出すことはできません。オブジェクトにメッセージを送ることしかできません。そのメッセージに対するあなたの応答は、関数を呼び出すことを含め、あなたが望むものであれば何でも構いません。あなたがこれを機能させる理由を考えることはできません。メソッドの自動保存を実行する可能性が高くなります。 –

2

I、個人的に、それは 場合には、彼らはその後、あなたはあなたのための世話をするautosavingを、欲しい

を終了し、ユーザーの種類として 保存コンテンツのためにこれを使用することになります。

+0

@Graham Lee NSTextFieldsが画面に動的に追加されても、これは動作しますか? – PF1

+0

それらが表すテキストがドキュメントモデルの一部である場合は、yesです。 –

関連する問題