Делегат NSURLConnection не работает

Я много искал и пробовал, но в моем приложении (которое использует iOS 5 sdk) методы делегата NSURLConnection вызываются только тогда, когда я инициализирую и запускаю соединение в методе viewDidLoad или при нажатии любой кнопки.

Но я хочу вызвать его после анализа моего файла JSON. И создайте новое соединение для каждой записи в JSON.

Кто-нибудь может сказать мне, что происходит? Что-то изменилось в ios sdk 5.

Вот мой код:

-(void)getData:(NSString*)URL{
NSURLRequest *urlRequest = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:URL]];

shortURL = [NSString stringWithString:URL];


connection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self];

//NSAssert(connection!=nil, @"no connection", nil);
[connection start];

}

- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)response

{ // application specific stuff }

Функция getData написана в классе, унаследованном от NSObject. И вызывается из

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

метод UITableView.

Пожалуйста, помогите мне с этим.


person user1173861    schedule 27.01.2012    source источник
comment
последние методы делегата устарели в iOS 5, читайте в документации   -  person Igor Bidiniuc    schedule 27.01.2012
comment
Пожалуйста, предоставьте блок кода здесь, чтобы можно было определить реальную проблему.   -  person iCreative    schedule 27.01.2012
comment
Я использую метод willReceiveResponsse. который, я думаю, не устарел.   -  person user1173861    schedule 27.01.2012
comment
Возможно, код разбора JSON находится в фоновом потоке? В этом случае вам нужно вручную запустить цикл выполнения   -  person Jason Harwig    schedule 10.02.2012


Ответы (1)


Предполагая, что код синтаксического анализа JSON выполняется в фоновом потоке, вам необходимо создать NSRunLoop для этого потока.

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

connection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self];
[[NSRunLoop currentRunLoop] run];

Примечание. Метод запуска блокирует

person Jason Harwig    schedule 10.02.2012