2

addSubview:私はUIAlertViewのUIProgressViewを管理しているだけでなく、ASIHTTPRequestのすべてを設定しましたが、[request startSynchronous];を置く場所ではアプリケーションがクラッシュします。UIAlertViewでUIProgressViewでASIHTTPRequestを使用する

[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 
request = CFHTTPMessageCreateRequest(kCFAllocatorDefault, (CFStringRef)[self requestMethod], (CFURLRef)[self url], [self useHTTPVersionOne] ? kCFHTTPVersion1_0 : kCFHTTPVersion1_1);

10:それは正確な問題が何であるかを言うのは難しいコールスタックなしCFRunLoopRun();

+0

さらに、クラッシュログは、私たちがあなたの問題を理解するのに役立ちます:-) –

+0

1つではありませんでした。 :3追加されました。 – Pdantix

+1

クラッシュレポートを便利にするためには、クラッシュレポートを象徴するか、デバッガからスタックトレースを提供する必要があります。あなたは間違いなく非同期呼び出しをしたいでしょう:同期呼び出しはUIをロックし、あなたのprogressViewは何も役に立たないでしょう。 –

答えて

2

しかし、このコードは、潜在的に心配である:

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

「解放」コールがdismissWithClickedButtonIndex後に移動する必要があります。 しかし、私はこれがクラッシュの原因であるとは思わない。

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

は次のようになります:

私はスタックダンプを掲載now've問題を参照してください

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

は正直に言うと、私は非常にコンパイラがあなたに与えていませんでした驚いていますそれについて警告する。

+0

これでアラートポップアップが表示され、アプリがクラッシュしました。私はデバッガからログを貼り付けるが、貼り付けるものは何もない。 – Pdantix

+0

@Pdantix - デバッガは実際にクラッシュの場所のコールスタックを表示する必要があります - デバッガで実行していることを確認し、デバッガウィンドウ(実行 - >デバッガメニュー)などを確認しています – JosephH

+0

あなたが話していること。 OPが編集されました。 – Pdantix

関連する問題