Могу ли я загрузить несколько контроллеров UIViewController, каждый из которых запускает свои собственные NSURLConnections? - PullRequest
0 голосов
/ 18 марта 2010

Мой Rootviewcontroller использует NSURLConnection для получения данных с сервера, а затем на основе этих данных загружает группу (например, 7) меньших UIViewController, каждый из которых также использует свой собственный NSURLConnection, чтобы получить более конкретные данные с сервера. Но проблема в том, что только RooTViewController получает обратные вызовы от:

- (void)connectionDidFinishLoading:(NSURLConnection *)theConnection

другие контроллеры UIView никогда не получают обратные вызовы ...

Ответы [ 2 ]

2 голосов
/ 18 марта 2010

Вы должны действительно работать с предположением, что в данный момент активен только один контроллер просмотра. Поэтому, если вы хотите, чтобы другие контроллеры представления работали, даже если они не видны на экране, вам следует переместить эту логику в какой-то одноэлементный объект, который выполняет всю сетевую связь. Контроллер представления, , когда они появляются , просто запросит данные у этого объекта.

Для iPhone очень нехорошо, если неактивные контроллеры представления работают в фоновом режиме. Единственное, что они делают, это управляют видом, который вы в настоящее время видите на экране.

0 голосов
/ 18 марта 2010

@ St3fan верен в отношении хороших шаблонов для UIViewController.Многие разработчики были утомлены, думая, что его UIViewController всегда имеет ненулевое представление (это не так) .... Тем не менее, я буду обсуждать здесь, что может быть не так.причины: вы не устанавливаете UIViewControllers как делегаты их NSURLConnections, или вы фактически не запускаете NSURLConnections.Наиболее вероятной причиной последнего является то, что вы используете NIB и ожидаете, что они загрузятся в начале программы, когда они фактически загружаются только при необходимости.NSURLC Соединения, которые вы хотите (**).Пройдите по своему коду в отладчике.Убедитесь, что вы не отправляете сообщения на ноль.Когда «ничего не происходит», это почти всегда означает, что вы отправляете сообщения на ноль.

(**) Не сходите с ума от подключений на iPhone.Сетевые подключения дороги в создании (как по времени, так и по батарее).Если вы можете получить все необходимые данные по одному соединению, у этого есть некоторые преимущества.Это не означает, что вы должны наклоняться назад, чтобы избежать соединений;просто будьте осторожны, позволяя им выйти из-под контроля.

...