質問

私はNSStringのように私の関数に入る数値を取得するためのWebサービスと通信しています。この数は、私は別のアクションを実行するまで待つように私の時間の正確な量を伝え、正確であることが重要です。

文字列は「89283」である場合は、

の例としては、これは私が89.283秒を待たなければならないことを意味します。 afterDelay:機能だから私は、私はperformSelectorに渡すことができる正確な値にこの文字列を変換するために、iPhoneのためのObjective-Cでの最善の方法を知りたいのです。ここに私のサンプルコードですが、私はその正確ではないが推測してます。

NSString *myDelayString = @"89283";
int myDelay = [myDelayString intValue]/1000;
[self performSelector:@selector(myFunction) withObject:nil afterDelay:myDelay];

私はmyDelay値が本当にNSTimeIntervalされるべきだと思うが、私は私が持っている文字列からそれを作るするかどうかはわかりません。事前に感謝します。

役に立ちましたか?

解決

ここで倍精度を可能にする変更を有するコードである。

NSString *myDelayString = @"89283";
NSTimeInterval myDelay = [myDelayString doubleValue]/1000;
[self performSelector:@selector(myFunction) withObject:nil afterDelay:myDelay];

使用のdoubleValueあなたは整数の除算を避けることができるように、二重などの文字列を取得するためです。 NSTimeIntervalのタイプはiphoneの二重のように定義されているので、あなたがそれに二重の結果を格納し、その後afterDelayにそれを渡すことができます。セレクタの一部を

他のヒント

NSTimeIntervalはダブルで、あなたは整数の除算をやっています。ただ、intするdoubleからそのタイプを変更し、あなたが良いことがあります。

前のイベントが完全に処理されるために、あなたが常に待機しなければならないので、あなたが、またはNSTimerであるとして、実行ループを使用して

遅延が非常に不正確です。実行する場合は、あなたのコードが予想よりも後に100ミリ秒以上を実行している可能性があります。

あなたの高精度にもかかわらずだから、精度はおそらく真剣に欠けされます。

あなたはこの正確なタイミングを必要とする理由によって、あなたの計算に修正を行うと差分議論の余地をレンダリングすることができるかもしれない。

ちょうどコメントを追加していますが、あなたがそうでなければ、あなたが期待するもの得ることはありません100.0で割ること浮かぶようにmyDelayを変換する場合を確認するのに十分な担当者を持っていません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top