我已经设法在UIAlertView中进行了addSubview:
UIProgressView,并为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();
答案 0 :(得分:2)
没有调用堆栈,很难说出确切的问题是什么。
然而,这段代码可能令人担忧:
[progressAlert release];
[request startSynchronous];
[progressAlert dismissWithClickedButtonIndex:0 animated:YES];
应该在dismissWithClickedButtonIndex之后调用“release”调用。 但是我认为这不太可能是导致事故发生的原因。
我发现问题现在已经发布了堆栈转储:
NSURL *url = @"http://example.com/myfile.txt";
应该是:
NSURL *url = [NSURL URLWithString:@"http://example.com/myfile.txt"];
说实话,我很惊讶编译器没有给你一个警告。