Форум программистов, компьютерный форум, киберфорум
Наши страницы

Objective-C

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

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

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

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

Как сделать, чтобы текст букв изменялся как в караоке? - Objective-C
Может ли кто-то подсказать: как сделать так, чтобы в текстовом окне, текст, который уже есть в окне, постепенно (побуквенно) изменял цвет...

Как сделать, чтобы скрол работал во все стороны? - Objective-C
как сделать так чтобы скрол работал во все стороны? пытался так, но так только в 2 стороны... int x = self.view.frame.size.width; ...

.NET 4.x Как сделать, чтобы потоки выполнялись параллельно? - C#
у меня есть 6 потоков, но как мне сделать чтобы они шли параллельно ? static void Main(string args) { Thread t1 =...

Как сделать, чтобы 2 одинаковых перегруженных оператора выполнялись верно - C++
Всем привет! Столкнулся с такой ситуацией, что мне понадобилось использовать 2 перегруженных одинаковых оператора, все конечно же...

Как сделать чтобы при нажатии на кнопку выполнялись действия закрепленные за одним или сразу несколькими чекбоксами? - Visual Basic
Есть форма с несколькими чекбоксами. Как сделать чтобы при нажатии на кнопку выполнялись действия закрепленные за одним или сразу...

Сделать, чтобы по нажатию элемента из listBox выполнялись действия - C#
например сумма. a=3; b=2; и нажимаем на сумму у нас выполняется сложение и в texBox ответ поступает у или куда то в другое место)

9
zulkis
684 / 611 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
09.10.2012, 13:30 #2
Если у Вас загрузка данных с сервера идет синхронно - бейте себя по рукам и переделывайте.
Вызываете метод асинхронно в отдельном потоке, который подгружает что Вам нужно, а потом в главном потоке обрабатываете это.
А пока чтото грузится, в главном потоке будет отрабатывать изменение UI.
1
andrei0077
6 / 6 / 1
Регистрация: 23.06.2011
Сообщений: 92
09.10.2012, 15:14  [ТС] #3
Понятно. Тогда 2 вопроса
1) Как узнать, асинхронно идёт загрузка или синхронно?
2) Как вызвать метод асинхронно в отдельном потоке?
0
zulkis
684 / 611 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
09.10.2012, 21:39 #4
А вы как запрос формируете и вызываете?
inBackground
onThread
А GCD мне нравиться больше всего
1
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?
0
zulkis
684 / 611 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
10.10.2012, 18:11 #6
Цитата Сообщение от andrei0077 Посмотреть сообщение
[xmlParser parce];
Точно не будет работать
В данном случае GCD не стоит использовать, хватит и того, как Вы сделали, главное смотреть, чтобы
потоки правильно отрабатывали. И не было обращений из разных потоков с записью\чтением одновременно.
1
andrei0077
6 / 6 / 1
Регистрация: 23.06.2011
Сообщений: 92
10.10.2012, 19:57  [ТС] #7
Вы имеете ввиду, чтоб 2 потока одновременно не обращались к геттеру и сеттеру одного и того же свойства?
0
zulkis
684 / 611 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
10.10.2012, 21:22 #8
Ну это к примеру. Еще чтобы в базу не стучались с записью, чтобы только главный потом с GUI работал...
1
andrei0077
6 / 6 / 1
Регистрация: 23.06.2011
Сообщений: 92
15.10.2012, 14:06  [ТС] #9
Спасибо, понял. Последний момент хочу уточнить насчёт асинхронности/синхронности. Когда метод выполняется в отдельном потоке, это значит асинхронно? А когда методы выполняются последовательно в одном потоке, это значит синхронно? я правильно понял?
0
zulkis
684 / 611 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
15.10.2012, 14:53 #10
Это достаточно общие понятия, и да, Вы правильно поняли.
1
15.10.2012, 14:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.10.2012, 14:53
Привет! Вот еще темы с ответами:

Как сделать чтобы в денвере идентификаторы id отображались последовательно - Web-серверы
как сделать чтобы в денвере идентификаторы id отображались последовательно 1,2,3,4,5,а не 1, 40,80,7?

Как сделать чтобы поля со списком включались последовательно? - MS Access
Всем здрасте! Прошу прощения, если есть уже подобное где то, то дать ссылочку. Вообщем есть форма с 5-ю полями со списком (каждое...

Можно ли сделать так чтобы скрипты выполнялись несколько раз через определенное время? - C# ASP.NET
Можно ли сделать так чтобы скрипты выполнялись несколько раз через определенное время.

Как изменить код программы чтобы все условия выполнялись должным образом? - C++
Здравствуйте! Вот код программы: #include <iostream> #include <time.h> #include <math.h> using namespace std; int t; ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru