2015-05-31 2 views
0

Я использую NSTimer для вызова метода, который называется Lose. У меня был таймер, который, когда он закончился, назывался Lose, но я потерял все из-за ошибки жесткого диска. Попробовав все это снова, я не могу заставить метод вызываться.Почему мой NSTimer не вызывает мой метод по истечении срока?

Timer = [NSTimer timerWithTimeInterval:timeMax target:self selector:@selector(Lose) userInfo:nil repeats:NO]; 

Lose объявлена ​​в моем файле .h, как это:

-(void)Lose; 

Кроме того, мой метод выглядит следующим образом:

-(void)Lose{ 

Text.hidden = NO; 
scoreLabel.hidden = NO; 
Target.hidden = YES; 
Targetx.hidden = YES; 


if (Score > highScoreNumber) { 
    highScoreAchieved.hidden = NO; 
    highScoreNumber = Score; 
    } 

} 

переменная timeMax является ИНТ объявлена ​​в моем .h, как и в прошлый раз. всякий раз, когда цель используется в моей игре, timeMax становится на 0,03 секунды короче. Я делаю это вот так:

timeMax = 5 - (Score * 0.03); 

Я не помню, чтобы он выглядел другим перед массивным аппаратным сбоем, но почему он не работает?

+1

Пожалуйста, найдите время, чтобы ознакомиться с [соглашениями об именах объектов-целей] (https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Conventions/Conventions.html#//apple_ref/ DOC/UID/TP40011210-CH10-SW1). –

+0

Какова ценность оценки? Есть ли вероятность того, что 'timeMax' будет отрицательным? –

+0

@lead_the_zeppelin timeMax начинается с 5, когда нажата кнопка запуска. Счет начинается с 0. – Yugaman

ответ

3

Вы должны запланировать таймер на цикл выполнения или просто использовать эту строку, вместо которой график его для вас:

Timer = [NSTimer scheduledTimerWithTimeInterval:timeMax 
             target:self 
             selector:@selector(Lose) 
             userInfo:nil 
             repeats:NO]; 

Это также хорошая идея, чтобы всегда резервную копию кода ... который напоминает мне ,

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