NSURLConnection возвращает данные нулевой длины - PullRequest
1 голос
/ 07 июня 2011

У меня была асинхронная работа NSURLConnections, которая отлично работала, когда я использовал мой viewController в качестве делегата, теперь у меня есть все виды подключений, и я хочу сделать их все через одноэлементный объект Connection. Поэтому у меня есть Connection, создающий новый объект делегата для каждого соединения, которое он делает. Соединение создается в делегате приложения, но функция +(void)send:(Message *), вероятно, завершается.

Мне кажется, что это работает так, что слушатели-делегаты попадают в цикл выполнения (я не совсем уверен в этом, но думаю, что они не в отдельных потоках. Это не должно иметь значения, поскольку делегаты выделяют свои собственные responseData memory.) и connectionDidFinishLoading выполняется просто отлично, но с пустыми responseData. Я имею в виду, что я нахожусь в connectionDidFinishLoading, но responseData имеет нулевые байты.

Код, создающий делегат приложения (в методе send):

ConnectionDelegate *delegate = [[ConnectionDelegate alloc] init];
NSURLConnection *connection=[[NSURLConnection alloc] initWithRequest:request delegate:delegate];

Итак, мой вопрос сложен вдвое:

  1. Проблема в том, что метод send завершается? Указатель делегата имеет локальную область видимости.

  2. Если это проблема, что я могу сделать, чтобы сохранить жизнь делегату?

1 Ответ

0 голосов
/ 07 июня 2011

Вы должны дважды проверить реализацию вашего делегата connection:didReceiveData:

Помните, что вы несете ответственность за сбор входящих сегментов данных там.

Пожалуйста, прочитайте документацию Apple (особенно руководство по программированию системы загрузки URL-адресов) и повторите образец кода, если у вас возникли сомнения.

...