2012-06-20 5 views
0

Это может показаться не очень умным, но у меня возникают небольшие трудности с тем, чтобы заставить этот метод работать. Я хочу использовать переменную interstitialad для хранения времени, когда она вызывается в первом условии. И тогда, когда callcount> = 2, я хочу использовать одно и то же значение из предыдущего. Может ли кто-нибудь дать мне идеи?Переменная область, если инструкция 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

Смежные вопросы