Я пытаюсь ускорить загрузку моего приложения. Я использовал Asynchronous NSURLConnection для загрузки содержимого с сервера, он работал нормально с одним подключением.
Я использую код из этого поста для реализации нескольких объектов делегатов. Несколько делегатов NSURLConnection в Objective-C
Когда я создал 2 объекта NSURLConnection, каждый пытается загрузить разные файлы.
Была вызвана функция обратного вызова didReceiveData, но она получала данные только первого объекта NSURLConnection до тех пор, пока не было установлено первое соединение, затем она начала получать данные от второго NSURLConnection. Я хочу, чтобы эти два соединения принимали данные одновременно, что мне делать? Вот мой текущий код.
-(IBAction) startDownloadClicked :(id) sender
{
while (bDownloading)
{
int nCurrentCon = 0;
while (nCurrentCon < 2)
{
[self downloadAFile:[filenameArray objectAtIndex:nCurrentCon]];
nCurrentCon++;
}
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.5]];
}
}
- (void) downloadAFile: (NSString*) filename
{
NSString* urlstr = @"ftp://myftpusername:password@hostname";
NSURLRequest* myreq = [NSURLRequest requestWithURL:[NSURL URLWithString:urlstr]];
DownloadDelegate* dd = [[DownloadDelegate alloc] init]; //create delegate object
MyURLConnection* myConnection = [[MyURLConnection alloc] initWithRequest:myreq delegate:dd
startImmediately:YES];
}
Затем в моем объекте Delegate я реализовал эти подпрограммы
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
[receiveBuffer setLength:0];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
NSLog(@"receiving data for %@", targetFileName); //the file name were set when this delegate object is initialized.
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
NSLog(@"Download Failed with Error - %@ %@",
[error localizedDescription],
[[error userInfo] objectForKey:NSErrorFailingURLStringKey]);
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSLog(@"File %@ - downloaded.", targetFileName);
}