NSTimer не работает в NSThread? - PullRequest
0 голосов
/ 30 марта 2012

очень простое использование NSThread и NSTimer, как показано ниже.Когда пользователь нажимает кнопку, я хочу, чтобы @ "aaaaa" печатался каждую секунду, а @ "aaaaa" печатался только один раз?Кажется, NSTimer не работает ... help

//this method is connected to 'run' button in IB
- (IBAction)begin1:(id)sender {
    [NSThread detachNewThreadSelector:@selector(thread1) toTarget:self withObject:nil];
}

-(void)thread1{
    NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1 
                                                      target:self
                                                    selector:@selector(aaa)
                                                    userInfo:nil
                                                     repeats:YES];
    [timer fire];
}

-(void)aaa{
    NSLog(@"aaaaa");
}

Ответы [ 2 ]

0 голосов
/ 30 марта 2012

Для цикла выполнения таймер не является допустимым источником, который будет поддерживать его работу.Предположительно, ваш цикл выполнения видит, что ему нечего делать, затем завершает работу, аннулируя свой таймер - это будет иметь место, если ваша фактическая реализация будет такой, как написано.Таким образом, вам нужно убедиться, что цикл выполнения вторичного потока продолжается, чтобы таймер продолжал работать, потому что поток просто выходит и забирает таймер вместе с ним.

0 голосов
/ 30 марта 2012

Вы не сохраняете таймер.+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)seconds target:(id)target selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)repeats возвращает автоматически выпущенный NSTimer, поэтому вы должны сохранить его где-нибудь, если хотите убедиться, что он работает, пока вы не скажете ему остановиться.

...