NSURLConnection Делегат не работает - PullRequest
0 голосов
/ 27 января 2012

Я много искал и пробовал, но в моем приложении (которое использует 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.

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

1 Ответ

2 голосов
/ 10 февраля 2012

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

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

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

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

...