Как не прерывать каждое выполнение ScrollView и NSTimer программно?

#iphone #multithreading #uiscrollview #nstimer

#iPhone #многопоточность #uiscrollview #nstimer

Вопрос:

На прокрутку Scrollview и NSTimer влияет основной поток, поэтому я не могу обрабатывать две задачи одновременно.

Когда в определенное время происходит прокрутка, как программно справиться с двумя задачами (NSTimer, прокрутка)?

MyView добавляет Scrollview и в то же время выполняет каждую вторую анимацию NSTimer.

Однако во время прокрутки NSTimer не запускает анимацию. работы приостановлены (они ожидают в очереди.) в конце прокрутки (называемой scrollViewDidEndDecelerating) выполняется анимация ожидающих работ.

Во время прокрутки я хотел бы, чтобы одновременно работал NSTimer.

Комментарии:

1. Попробуйте поместить свою анимацию во второй поток (NSThread)

2. Как написать код? насколько я знаю, этот NSTimer должен выполняться в MainThread. Как выполнить BackgroundThread?

Ответ №1:

Вы не предоставили никакого кода, поэтому я просто собираюсь написать один из способов, которым вы могли бы разделить свою задачу на два разных потока.

Чтобы переместить анимацию для запуска в фоновом потоке, чтобы она не прерывалась, используйте:

 [self performSelectorInBackground:@selector(METHOD_NAME) withObject:nil];
  

пример:

 -(void)doStuff{
    //Whatever you call here will be executed on main thread.
    NSLog(@"This is main thread");

    [self performSelectorInBackground:@selector(animate) withObject:nil];
}

-(void)animate{
    //Whatever you call here will be executed on a background thread.
    NSLog(@"This is background thread");
}
  

Не злоупотребляйте потоками, они используют много ресурсов. Используйте их всякий раз, когда это необходимо.