#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");
}
Не злоупотребляйте потоками, они используют много ресурсов. Используйте их всякий раз, когда это необходимо.