2012-03-11 27 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

如果您發佈了您正在收到的錯誤消息 – 2012-03-11 14:35:17

+0

exc_bad_access ... – 2012-03-11 14:36:54

回答

1

在代碼的第一行中,您只聲明瞭一個NSOperationQueue引用,但未創建NSOperationQueue對象,這是「EXC_BAD_ACCESS」錯誤的根本原因。您應該將一個NSOperationQueue對象分配給queue,然後使用它。

代碼的第一行更改爲

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

這將解決您的問題。

+0

謝謝,您是對的。你知道如何從NSURLResponse(而不是NSHTTPURLResponse)獲得[response statusCode]嗎? – 2012-03-11 15:17:21

+0

「狀態碼」是HTTP協議的一部分,假設您從NSURLResponse的NSHTTPURLResponse(而不是NSURLResponse)的子類獲取狀態碼。由於你正在發送一個HTTP請求,所以'respons'對象實際上是一個NSHTTPURLResponse對象,所以你可以得到這樣的狀態代碼:'[(((NSHTTPURLResponse *)respons)statusCode]' – Tony 2012-03-12 06:04:56

+0

謝謝Tony! – 2012-03-13 20:06:21