2012-06-20 118 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