Использование ASIHTTPRequest с UIProgressView в UIAlertView - PullRequest
2 голосов
/ 05 января 2011

Мне удалось addSubview: UIProgressView в / на UIAlertView, а также установить все для ASIHTTPRequest, но куда бы я ни положил [request startSynchronous];, приложение вылетает.

[request startAsynchronous]; тоже не помогает.

Спасибо.

Вот что у меня пока есть;

Есть проверка, которая проверяет, существует ли файл и т. Д., Который работает,но я удалил его ради этого вопроса.

-(IBAction) update {
    // define everything.
    NSString *script;
    script = [[[NSBundle mainBundle] bundlePath] stringByAppendingString:@"/myfile.txt"];

    NSURL *url = @"http://example.com/myfile.txt";

        UIAlertView *progressAlert = [[UIAlertView alloc] initWithTitle: @"Updating..." message: @"Please wait..." delegate: self cancelButtonTitle: nil otherButtonTitles: nil];

        progressView = [[UIProgressView alloc] initWithFrame:CGRectMake(30.0f, 80.0f, 225.0f, 90.0f)];
        [progressAlert addSubview:progressView];
        [progressView setProgressViewStyle: UIProgressViewStyleBar];
        ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
        [request setDownloadDestinationPath:script];
        [request setDownloadProgressDelegate:progressView];
        [progressAlert show];
        [progressAlert release];
        [request startSynchronous];
        [progressAlert dismissWithClickedButtonIndex:0 animated:YES];
}

Стек вызовов;

#0  0x010cda44 in CFURLCopyAbsoluteURL
#1  0x00cee0f4 in HTTPMessage::initialize
#2  0x00cee018 in CFHTTPMessageCreateRequest
#3  0x00016d91 in -[ASIHTTPRequest main] at ASIHTTPRequest.m:855
#4  0x000859a6 in __NSThreadPerformPerform
#5  0x0119a01f in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
#6  0x010f828b in __CFRunLoopDoSources0
#7  0x010f7786 in __CFRunLoopRun
#8  0x010f7240 in CFRunLoopRunSpecific
#9  0x010fa504 in CFRunLoopRun
#10 0x0001ae30 in +[ASIHTTPRequest runRequests] at ASIHTTPRequest.m:4286
#11 0x00070d4c in -[NSThread main]
#12 0x00070cd8 in __NSThread__main__
#13 0x9319785d in _pthread_start
#14 0x931976e2 in thread_start

3: request = CFHTTPMessageCreateRequest(kCFAllocatorDefault, (CFStringRef)[self requestMethod], (CFURLRef)[self url], [self useHTTPVersionOne] ? kCFHTTPVersion1_0 : kCFHTTPVersion1_1);

10: CFRunLoopRun();

1 Ответ

2 голосов
/ 05 января 2011

Без стека вызовов трудно сказать, в чем именно заключается проблема.

Однако этот код потенциально беспокоит:

    [progressAlert release];
    [request startSynchronous];
    [progressAlert dismissWithClickedButtonIndex:0 animated:YES];

Вызов "release" должен быть перемещен послеdismissWithClickedButtonIndex.Однако я думаю, что вряд ли это является причиной сбоя.

Я вижу, что проблема выложила дамп стека:

NSURL *url = @"http://example.com/myfile.txt";

должно быть:

NSURL *url = [NSURL URLWithString:@"http://example.com/myfile.txt"];

Если честно, я очень удивлен, что компилятор не предупредил вас об этом.

...