10

私は、scheduledTimerWithTimeInterval で関数呼び出しを行っています。特定のWebサービスについてxmlの解析が完了しているかどうかを確認し、正常な応答を取得した後、didEndElementメソッドでタイマーを無効にしています。

timerForStopWebService = [NSTimer scheduledTimerWithTimeInterval:30.0 target:self selector:@selector(stopWS) userInfo:nil repeats:NO];

今、私は iOS 5.0 で問題に直面しており、他の iOS バージョンでは問題なく動作しています。iOS 5.0 では、関数 stopWS をいつでも呼び出すことができます。その解決策があれば教えてください。

そして今、私は遅延を伴う performselector を実装し、解析が完了したかどうかを識別するために stopWS にブール変数を設定しています。これの間に大きな違いがあることを知りたいだけですか?この解決策は私の問題に有効ですか?

他の方法が存在する場合は、私に提案してください、ありがとう。

4

2 に答える 2

21

ここにあなたの違いがあります

performSelectorWithObjectAfterDelay

  • 名前が示すように、指定された秒数の後にセレクターを実行します。一度

  • ここで注意する必要があるのは、セレクターが実行されているオブジェクトが解放される前に、以前の実行要求をキャンセルする必要があるということです。そのために cancelPerformSelector メソッドを使用します。

スケジュールされたTimerWithTimeInterval

  • このメソッドを使用すると、指定した期間の後にセレクターを呼び出すこともできますが、同じセレクターを繰り返し呼び出すことができるパラメーター [repeats:] もあります

  • 呼び出しを渡してセレクターを呼び出すこともできます。これは、セレクターが多くの引数を必要とする場合に特に役立ちます。

  • タイマーが不要になったら無効にする必要があります。これでうまくいくはずです

    [myTimer 無効化]; myTimer = なし;

また、これは NSTimer に関する最も決定的なスレッドです。ぜひご覧ください。NSTimer の使用方法

于 2011-11-23T11:04:50.227 に答える