Использование GCD для ускорения загрузки вида - PullRequest
2 голосов
/ 28 июня 2011

Итак, я получил код монстра на моем viewDidLoad при первом просмотре. Ну, я выделяю 7 моих собственных объектов, так что это выглядит так

OwnObject *o1 = [[OwnObject alloc] initWithValuesString:@"blabla" image:[UIImage named:@"blabla"]];
OwnObject *o2 = [[OwnObject alloc] initWithValuesString:@"blabla" image:[UIImage named:@"blabla"]];

И так далее ...

Я снова смотрел сессионное видео у разработчика Apple, и они сказали, что я должен использовать GCD, чтобы ускорить процесс, поэтому я могу ускорить свое приложение, поставив его в очередь для отправки?

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

Спасибо, извините, если это глупо.

1 Ответ

4 голосов
/ 28 июня 2011

Если эти распределения не выполняют действия, которые требуют основного потока (например, касание пользовательского интерфейса), то они могут быть выполнены через GCD в очереди. Вы хотели бы использовать dispatch_async, потому что при синхронном вызове вам все равно придется ждать, пока распределение завершится, и ничего не получит. Кроме того, вы должны быть уверены, что ваш контроллер представления был разработан для обработки финишной обработки viewDidLoad без выделения этих объектов, поскольку асинхронный вызов диспетчеризации будет, ну, в общем, асинхронным. Вам, вероятно, потребуется либо опубликовать уведомление о том, что выделение завершено, либо использовать dispatch_group_notify, чтобы контроллер представления знал, когда выделения были завершены, и мог начать использовать объекты.

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

...