Методы делегата NSURLConnection не выполняются - PullRequest
3 голосов
/ 06 августа 2010

Я запускаю следующий пример кода от Apple -

        NSString *requestURL = [[NSString alloc] initWithString:@"http://google.com/"];         
        NSURLRequest *theRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:requestURL] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
        NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];

        if(theConnection) {

            NSLog(@"The connection has started...");

        } else {

            NSLog(@"Connection has failed...");

        }

Но методы делегата ниже не вызываютсяМожет кто-нибудь помочь мне?

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {

Ответы [ 2 ]

3 голосов
/ 06 августа 2010

Если вы выполняете это в фоновом потоке, поток, вероятно, завершается до вызова делегатов.Посмотрите на вызов в вашем методе, который начинает передачу сразу после вызова метода, который запускает фоновый поток, CFRunLoopRun ().Затем в ваших обратных вызовах connectionDidFinishLoading: и connection:didFailWithError: убедитесь, что вы также выполняете:

CFRunLoopStop(CFRunLoopGetCurrent());

В конце этих методов, иначе вы никогда не вернетесь.

1 голос
/ 06 августа 2010

Вы устанавливаете делегата?В интерфейсе класса, где расположен этот код, добавьте <NSURLConnectionDelegate>

Например:

@interface myClass : parentClass<NSURLConnectionDelegate>

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...