----
- (void)viewDidAppear:(BOOL)animated
{
timer = [NSTimer scheduledTimerWithTimeInterval:0.1f target:self selector:@selector(someSelector) userInfo:nil repeats:YES] ;
}
といった感じでタイマーをセットしたが、viewが表示されても一向に someSelector が呼ばれない。
viewController の呼び出し場所によっては、同じコードでも呼ばれるときがある。
調べた結果以下のようにメインスレッドでタイマーをセットすると呼ばれるようになりました。
- (void)startTimer
{
timer = [NSTimer scheduledTimerWithTimeInterval:0.1f target:self selector:@selector(someSelector) userInfo:nil repeats:YES] ;
}
- (void)viewDidAppear:(BOOL)animated
{
[self performSelectorOnMainThread:@selector(startTimer) withObject:nil waitUntilDone:NO] ;
}
コメントする