2009-07-14 5 views
1

Каждые 1/16 секунды у меня есть NSTimer, который срабатывает, каждый раз вызывая метод. Я хочу создать статическое целое число, которое увеличивается на «1» каждый раз при вызове метода, как только статическое целое равно «16», я хочу вызвать другой метод и сбросить статическое целое число до «0».Статический счетчик, который будет многократно увеличиваться на NSTimer

Любое понимание очень ценится. (Язык Obj-C)

ответ

6

Так объявит его как статический междунар ...

static int myCounter; 
@implementation SomeClass 

- (id) init { 
    if (self = [super init]) { 
    myCounter = 0; 
    NSTimer * someTimer = [NSTimer scheduledTimerWithTimeInterval:(1/16) target:self selector:@selector(fireTimer:) userInfo:nil repeats:YES]; 
    } 
    return self; 
} 

- (void) fireTimer:(NSTimer *)aTimer { 
    myCounter++; 
    if (myCounter == 16) { 
    [self doSomeMethod]; 
    myCounter = 0; 
    } 
} 

@end 
+0

Я думаю, что он нуждается в методе, чтобы изменить каждый второй, который это не будет выполнять. Вы можете передать указатель на функцию (если obj C имеет их) в качестве второго параметра и просто вызвать это. – jkeys

+0

@Послушано, что это невозможно. Как только таймер будет создан, вы не сможете изменить, какой селектор он запускает. Поэтому простое решение состоит в том, чтобы иметь оператор if() в методе fire, а затем оттуда оттуда. –

+0

@Послушано и прохождение селектора в качестве второго параметра, вы также не можете этого сделать. Методы огней NSTimer должны иметь очень специфическую сигнатуру (return void, single NSTimer *). –

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

  • Нет связанных вопросов^_^