2012-06-20 112 views
0

这听起来可能不是很聪明,但我在使这个方法工作中遇到一些困难。我想使用interstitialad变量来存储在第一个条件中被调用的时间。然后当callcount> = 2时,我想使用前一个相同的值。有人可以给我想法吗?变量范围if else语句

-(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]; 

    } 
+0

你为什么用小数位的'long'?使用'double'或'float'。 –

回答

0

让它类这段代码是在一个实例变量,并使用类的同一个对象来处理所有的timestamp电话。

0

当语句结束时,在if语句(或else语句)中声明的变量超出范围。您必须在if/else语句之前声明变量,以使其值在语句之间保持不变。请注意,某些语言将绑定的if/else语句视为相同的语句,而其他语言不会。

+0

但是我想存储的时间戳是在第一个条件满足时。当第二个条件满足时,我想使用相同的值。 – ilaunchpad

+0

在if语句之外声明变量将导致其值保留在语句中。我不确定你是在循环还是在其他地方调用它,但只要你不重新分配它,并且它的价值没有超出范围,它就会保留最后一个分配它的语句的价值。 – Wug

0

首先你必须明白,在其他情况下,每次调用时间戳时只会访问其中的一个。如果您希望在一次运行中执行两次检查,请删除else关键字。

如果您只想将interstitialad的值保留在类中,只需将其转换为实例变量,方法是将其移出该方法,并将其声明在您的界面中,并使用该方法对其进行引用属性设置正确。

+0

@A Salcedo谢谢。你的解释看起来很简单。 – ilaunchpad