2012-03-11 1 views
0

я делаю какие-то найти свое устройство, используя этот код:отправка много AsynchronousRequests выдает ошибку

NSOperationQueue* quququ; 

int i=0; 
for (i=0; i<256; i++) { 
    //NSLog(@"%i",i); 

    NSString *url=[NSString stringWithFormat:@"http://%i.%i.%i.%i/",myip1,myip2,myip3,i]; 
    //NSLog(@"urlGET = %@", url); 

    NSURLRequest* request = [NSURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:1]; 

    [NSURLConnection sendAsynchronousRequest:request queue:quququ completionHandler:^(NSURLResponse *respons, NSData *data, NSError *error) { 

    //do smth 
    NSLog(@"data: %ld bytes. res: %@, error: %@", (long)[data length], respons, error); 

}]; 

, что я делаю не так? Я получаю ошибку «exc_bad_access».

+0

Это поможет, если вы отправили сообщение об ошибке, которое вы получаете –

+0

exc_bad_access ... –

ответ

1

В первой строке вашего кода вы просто объявляете ссылку NSOperationQueue, но не создавали объект NSOperationQueue, что является основной причиной ошибки «EXC_BAD_ACCESS». Вы должны назначить queue объектом NSOperationQueue, а затем использовать его.

Измените первую строку кода

NSOperationQueue* quququ = [[[NSOperationQueue alloc] init] autorelease]; 

Это позволит решить вашу проблему.

+0

Спасибо, u r right. Вы знаете, как получить [response statusCode] из NSURLResponse (а не из NSHTTPURLResponse)? –

+0

«Код состояния» является частью протокола HTTP, вы можете получить код состояния из NSHTTPURLResponse, который является подклассом NSURLResponse, а не NSURLResponse. Поскольку вы отправляете HTTP-запрос, объект 'respons' на самом деле является объектом NSHTTPURLResponse, поэтому вы можете получить код состояния следующим образом:' [((NSHTTPURLResponse *) response) codeCode] ' – Tony

+0

Спасибо Тони! –

Смежные вопросы