从NSMutableArray下载时'for'循环崩溃

Ser*_*yov 8 iphone cocoa-touch objective-c nsurlconnection ios

我的4个元素NSMutableArray.我有这个简洁的代码用于下载文件和显示文件的数据UITextView用于测试目的.没有for循环,一切都很好.给我这个问题的代码就在这个函数中:

- (void)complexDownload {
    int i;
    for (i=0; i < downloadArray.count; i++) {
        if (isBusy == NO) {
            [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
            downloadURL = [downloadArray objectAtIndex:i];
            NSLog(@"URL is %@", downloadURL);
            NSLog(@"Downloading object at index %i", i);
            NSURL *url = downloadURL;
            NSURLRequest *theRequest=[NSURLRequest requestWithURL:url
                                                      cachePolicy:NSURLRequestUseProtocolCachePolicy
                                                  timeoutInterval:60.0];

            NSURLConnection *theConnection = [NSURLConnection connectionWithRequest:theRequest delegate:self];

                if (theConnection) {
                    self.downloadData = [NSMutableData data];
                    isBusy = YES;
                    NSLog(@"Busy value in download cycle equals %i, downloading", isBusy);
                } else {
                    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
                    NSLog(@"Connection failed");
                    isBusy = NO;
                }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我首先想到的问题可能在于isBusy BOOL,但即使没有if条件,应用程序崩溃.编译器给了我没有错误但是这一个: 这是大截图的链接.

其余功能如下:

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    [downloadData appendData:data];
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    NSString *dataString = [[NSString alloc] initWithData:downloadData encoding:NSASCIIStringEncoding];
    self.dataTextView.text = dataString;
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
    NSLog(@"Download finished!");
    isBusy = NO;
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
    NSLog(@"%@", error);
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
}
Run Code Online (Sandbox Code Playgroud)

所有NSLogged值都很好,Array有链接,所有链接都是正确的.

小智 6

我的猜测是,在某些时候要么在某些时候downloadArray[i]腐败,要么它不是NSUrl.代码在CFURLCopyAbsoluteURL()调用时崩溃[NSURLRequest requestWithURL...].