Ok. Поэтому я пытаюсь использовать GCD для обработки всей тяжелой нагрузки до перехода к следующему контроллеру. Я открываю большой архив Файлы и извлекаю их, что занимает некоторое время.лучший способ использования GCD для нарезания резьбы
Весь процесс выглядит так:
Нажмите> индикатор отображения активности UICollectionViewCell> Пусть НОД заботиться о тяжелом погрузочной> селектора перехода вызова с использованием performSelector: onThread: .....
Проблемы когда я использую mainThread, переход происходит слишком быстро, и вся загружаемая загрузка не срабатывает, пока через некоторое время и переход не будет выглядеть ужасно, и при использовании currentThread, ну, это займет столько времени, кажется, что ужасно приложение.
-(void)someMethod
{
//activity Indicator before transition begins
UIActivityIndicatorView *activity=[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
[activity setFrame:self.view.bounds];
[self.view addSubview:activity];
[self.view bringSubviewToFront:activity];
activity.hidesWhenStopped=YES;
[activity startAnimating];
dispatch_queue_t transitionQueue;
transitionQueue = dispatch_queue_create("com.app.transitionQueue", NULL);
dispatch_async(transitionQueue,^{
//heavy lifting code
viewerPVC=.....
dispatch_async(dispatch_get_main_queue(),^{
[activity stopAnimating];
[self transitionToMangaViewer:mReaderPVC];
});
};
}
-(void)transitionToViewer:(ViewerPVC*)viewerPVC
{
[self.navigationController pushViewController:mReaderPVC animated:YES];
}
Так Пробовал первое предложение, но переход по-прежнему кажется, багги, так как CollectionViewController до сих пор остаются на фоне некоторое время после перехода
Независимо от того, какая нить выполняет загрузку, потребуется столько же времени; что зависит от производительности вашей сети. Если вы не можете предварительно извлечь данные, то все, что вы можете сделать, это обеспечить хорошую обратную связь с пользователем. Я замечаю, что вы выполняете обновления пользовательского интерфейса (например, останавливаете представление активности) в фоновом потоке. Вы должны отправить эти действия в основную очередь. Что вы пытаетесь сделать с NSThread? Вы вообще никогда не используете этот класс – Paulw11