Форум программистов, компьютерный форум CyberForum.ru

Objective-C

Войти
Регистрация
Восстановить пароль
 
andrei0077
6 / 6 / 1
Регистрация: 23.06.2011
Сообщений: 92
#1

Как сделать, чтобы методы выполнялись последовательно - Objective-C

09.10.2012, 12:42. Просмотров 998. Ответов 9
Метки нет (Все метки)

Добрый день! У меня есть контролер, в нём 2 метода: добавление графики и загрузка данных с сервера. Когда я перехожу в этот контролер, то графика в нём загружается не сразу, а немного подвисает, пока идет загрузка с сервера. Я поставил небольшую задержку для загрузки с сервера, чтоб дать графике загрузиться. Тогда всё стало последовательно и подвисание исчезло. Но ставить задержку - это же не выход. Как сделать, чтобы методы выполнялись последовательно?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.10.2012, 12:42     Как сделать, чтобы методы выполнялись последовательно
Посмотрите здесь:

Как сделать листание под ipad Objective-C
Как сделать многоуровневую игру? Objective-C
Как сохранить числовые данные, чтобы они были доступны при следующем запуске приложения? Objective-C
сделать циклическую программу для любых чисел,чтобы при вводе числа получалось например так: 512=(5+1+2)3 Objective-C
Функции и методы Objective-C
Objective-C Как сделать, чтобы текст букв изменялся как в караоке?
Objective-C Как сделать адаптацию интерфейса к альбомной ориентации экрана
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
09.10.2012, 13:30     Как сделать, чтобы методы выполнялись последовательно #2
Если у Вас загрузка данных с сервера идет синхронно - бейте себя по рукам и переделывайте.
Вызываете метод асинхронно в отдельном потоке, который подгружает что Вам нужно, а потом в главном потоке обрабатываете это.
А пока чтото грузится, в главном потоке будет отрабатывать изменение UI.
andrei0077
6 / 6 / 1
Регистрация: 23.06.2011
Сообщений: 92
09.10.2012, 15:14  [ТС]     Как сделать, чтобы методы выполнялись последовательно #3
Понятно. Тогда 2 вопроса
1) Как узнать, асинхронно идёт загрузка или синхронно?
2) Как вызвать метод асинхронно в отдельном потоке?
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
09.10.2012, 21:39     Как сделать, чтобы методы выполнялись последовательно #4
А вы как запрос формируете и вызываете?
inBackground
onThread
А GCD мне нравиться больше всего
andrei0077
6 / 6 / 1
Регистрация: 23.06.2011
Сообщений: 92
10.10.2012, 12:26  [ТС]     Как сделать, чтобы методы выполнялись последовательно #5
Я вызывал вот так
Objective-C
1
2
3
4
5
6
7
8
9
10
[self performSelector:@selector(addParser) withObject:nil];
 
- (void)addParser
{
    
    XMLParser* xmlParser =  [[XMLParser alloc] init];
    xmlParser.delegate = self;
    [xmlParser parce];
    
}
Теперь исправил на [self performSelectorInBackground:@selector(addParser) withObject:nil]; Проблема исчезла. А как это же сделать через GSD?
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
10.10.2012, 18:11     Как сделать, чтобы методы выполнялись последовательно #6
Цитата Сообщение от andrei0077 Посмотреть сообщение
[xmlParser parce];
Точно не будет работать
В данном случае GCD не стоит использовать, хватит и того, как Вы сделали, главное смотреть, чтобы
потоки правильно отрабатывали. И не было обращений из разных потоков с записью\чтением одновременно.
andrei0077
6 / 6 / 1
Регистрация: 23.06.2011
Сообщений: 92
10.10.2012, 19:57  [ТС]     Как сделать, чтобы методы выполнялись последовательно #7
Вы имеете ввиду, чтоб 2 потока одновременно не обращались к геттеру и сеттеру одного и того же свойства?
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
10.10.2012, 21:22     Как сделать, чтобы методы выполнялись последовательно #8
Ну это к примеру. Еще чтобы в базу не стучались с записью, чтобы только главный потом с GUI работал...
andrei0077
6 / 6 / 1
Регистрация: 23.06.2011
Сообщений: 92
15.10.2012, 14:06  [ТС]     Как сделать, чтобы методы выполнялись последовательно #9
Спасибо, понял. Последний момент хочу уточнить насчёт асинхронности/синхронности. Когда метод выполняется в отдельном потоке, это значит асинхронно? А когда методы выполняются последовательно в одном потоке, это значит синхронно? я правильно понял?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.10.2012, 14:53     Как сделать, чтобы методы выполнялись последовательно
Еще ссылки по теме:

Как сделать свой шрифт в приложении? Objective-C
Как сделать offline кэш для браузера? Objective-C
Как сделать, чтобы скрол работал во все стороны? Objective-C
Как сделать пагинацию таблицы? Objective-C
Как сделать доступ к элементам массива по индексу и по литералу индекса? Objective-C

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
15.10.2012, 14:53     Как сделать, чтобы методы выполнялись последовательно #10
Это достаточно общие понятия, и да, Вы правильно поняли.
Yandex
Объявления
15.10.2012, 14:53     Как сделать, чтобы методы выполнялись последовательно
Ответ Создать тему
Опции темы

Текущее время: 22:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru