0

これはあまりスマートではないように聞こえるかもしれませんが、このメソッドを機能させるのにほとんど問題はありません。interstitialad 変数を使用して、最初の条件で呼び出された時刻を格納したいと考えています。そして、callcount >=2 の場合、以前と同じ値を使用したいと思います。誰かが私にアイデアを与えることができますか?

    -(void)timestamp{

       long now = [[NSDate date]timeIntervalSince1970]/1000;
        long interstitialad = 0.00;
        long finalad;

       if(Callcount ==1){
        interstitialad = [[NSDate date]timeIntervalSince1970]/1000;

       }

     else if (Callcount >= 2 && now - interstitialad >= 200){

     [self displayInterstitial];

     }
4

3 に答える 3

0

このコードが含まれるクラスのインスタンス変数にし、そのクラスの同じオブジェクトを使用してすべてのtimestamp呼び出しを処理します。

于 2012-06-20T19:14:36.363 に答える
0

if ステートメント (または else ステートメント) 内で宣言された変数は、ステートメントが終了するとスコープ外になります。変数の値をステートメント間で永続化するには、if/else ステートメントの前に変数を宣言する必要があります。結合された if/else ステートメントを同じステートメントとして扱う言語もあれば、そうでない言語もあることに注意してください。

于 2012-06-20T19:14:39.490 に答える
0

まず、タイムスタンプを呼び出すたびに if else の 1 つだけがアクセスされることを理解する必要があります。一度の実行で両方のチェックを行いたい場合は、else キーワードを削除してください。

クラス全体で interstitialad 変数の値を保持することだけが必要な場合は、それをメソッドの外に移動してインスタンス変数に変換し、インターフェイスで宣言し、プロパティが正しく設定された状態で参照を保持します。

于 2012-06-20T19:15:38.740 に答える