Tag: grand central dispatch

iOS GCD: основные потоки деактивируют блоки из очередей, отличных от главной очереди?

Я знаю, что очередь не является ниткой. Очередь – это концепция более высокого уровня, чем поток в GCD. Программисты имеют дело только с очередями, и пусть система решает, какие потоки выполнять блоки для максимальной эффективности. И я знаю, что привязка главной очереди привязана к основному потоку, а это означает, что если я поставлю блок в […]

performSelector: withObject: afterDelay: селектор без очереди

Я настроил блок для запуска в другой очереди и вызвал другой метод после задержки: piemanQ = dispatch_queue_create(PIEMAN_QUEUE_NAME, NULL); dispatch_async(piemanQ, ^{ [self performSelector:@selector(sendReadyToPieman) withObject:nil afterDelay:1.0]; }); Я ожидаю, что через секунду @selector(sendReadyToPieman) , однако ничего не происходит. Я прочитал doco на performSelector:withObject:afterDelay: и он говорит о том, что метод добавляется через таймер в текущей очереди. Я […]

Основная проблема обработки резьбы

В моем приложении я использую back ground thread для достижения нескольких сервисов и выполнения операций с основными данными. Я использовал основную нить для работы на заднем плане, отлично работает. Вот мой код dispatch_queue_t main = dispatch_get_main_queue(); dispatch_async(main, ^{ [self backGroundCall]; }); -(void)backGroundCall { NSLog(@"Done"); if([CacheManager refreshDBforFirstTimeUseWithDelegate:self]) { [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"IsDBInitialized"]; ContainerViewController *containerViewControllerInstance = [ContainerViewController […]

GCD, порядок исполнения?

Предположим, что у нас есть один UIVewcontroller, назовите его A, в viewdidload этого VC мы добавим к нему два UIViewcontrollers (B, C). теперь, чтобы сделать пользовательский интерфейс гладким в Viewdidload A, мы выполняем некоторую работу GCD dispatch_queue_t queue = dispatch_queue_create("CustomQueue", NULL); dispatch_async(queue, ^{ // Create views, do some setup here, etc etc // Perform on […]

runUntilDate не работает в фоновом потоке

sleep работает хорошо, но runUntilDate не работает в фоновом потоке. Но почему? -(IBAction) onDecsriptionThreadB:(id)sender { dispatch_async(dispatch_get_global_queue(0, 0), ^{ while (1) { NSLog(@"we are here"); [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:2]]; //sleep(2); } }); }

Примеры использования GCD

Возможный дубликат: есть ли хороший учебник о GCD (Grand Central Dsipatch)? Я смотрел видео из Apple о Grand Central Dispatch, но я не могу найти примеров на их сайте. В Интернете я нашел код, но его трудно понять, и он не похож на то, что обсуждалось в видео. Можете ли вы дать мне несколько простых […]

dispatch_group_async whitin dispatch_group_notify

Я хотел бы выполнить некоторые последовательные задания в приложении iOS. Я хочу, чтобы работа не выполнялась до тех пор, пока предыдущий не завершится. Сначала попытался сделать что-то подобное group = dispatch_group_create(); queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_group_async(group, queue, ^{ // Job 1 // … }); dispatch_group_async(group, queue, ^{ // Job 2 // … }); Таким образом, […]

Безопасно ли сбросить dispatch_once (не связано с потоками)

Id хотел бы знать, можно ли сбрасывать dispatch_once (без потоковой обработки): Мое дело в том, что во всем приложении я NSDateFormatters и NSNumberFormatters и другие. Я делаю это, обертывая их вызовами dispatch_once . Теперь, когда я получаю NSNotification, что локаль изменилась, id хотел сбросить некоторые из этих токенов dispatch_once, поэтому в следующий раз, когда нужны […]

AVPlayers в UICollectionViewCells в конечном итоге сбой приложения после прокрутки

Я пытаюсь создать приложение, похожее на Vine, где это просто канал ячеек и автовоспроизведение видео при прокрутке и остановке в ячейке. Каждый UICollectionViewCell имеет свой собственный AVPlayer . Прямо сейчас моя текущая настройка работает нормально по большей части, но после прокрутки на некоторое время приложение в конечном итоге сбой, и мой SDK для аналитики показывает, […]

Попытка запустить два процесса одновременно в GCD – iOS

Я пытаюсь загрузить два набора данных в фоновом режиме одновременно через GCD в iOS. В настоящее время я построил две отдельные параллельные очереди, в которых я запускаю каждую из задач. Однако задержка между завершением первой очереди и второй очередью (выполняющей задачи с одинаковой интенсивностью) очень велика (поэтому я предполагаю, что они не работают одновременно). У […]

Давайте будем гением компьютера.