2012-03-16 12 views
2

私は、バックエンドからビデオ、画像、およびpdfをダウンロードするiPadアプリを持っていますが、400 MBのダウンロード後にアプリがクラッシュし、コンソールからgdbが戻ってきます。下へデバイスにファイルをダウンロードするときにiPadアプリがクラッシュする

ここで私はビデオファイルに使用している書き込み関数の一部です。

UPDATE

アプリは、私がNSDataオブジェクト「mediaDataResponse」をリリースする場合は、すべてのファイルをダウンロードしていますが、すべてのファイルをダウンロードした後、私にEXC_BAD_ACCESのエラーが発生します。

助けが必要ですか?

   NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
       NSString *docsPath = [paths objectAtIndex:0]; 
       NSString *imageCacheDirPath = [docsPath stringByAppendingPathComponent:@"video"]; 

       if (![[NSFileManager defaultManager] fileExistsAtPath:imageCacheDirPath]) 
       { 
        [[NSFileManager defaultManager] createDirectoryAtPath:imageCacheDirPath 
               withIntermediateDirectories:NO 
                   attributes:nil 
                    error:NULL]; 
       } 

       NSString *filename = [NSHomeDirectory() stringByAppendingString:[NSString stringWithFormat:@"/Documents/video/%@.%@",cacheFileName,extensionstring]]; 
       [mediaDataResponse writeToFile:filename options: NSDataWritingAtomic error: &error]; 

       //Thumbnail 
       NSArray *thumbpaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
       NSString *thumbdocsPath = [thumbpaths objectAtIndex:0]; 
       NSString *thumbimageCacheDirPath = [thumbdocsPath stringByAppendingPathComponent:@"thumbnail"]; 

       if (![[NSFileManager defaultManager] fileExistsAtPath:thumbimageCacheDirPath]) 
       { 
        [[NSFileManager defaultManager] createDirectoryAtPath:thumbimageCacheDirPath 
               withIntermediateDirectories:NO 
                   attributes:nil 
                    error:NULL]; 
       } 

       NSURL *thumburl = [NSURL URLWithString:media.mediaThumbnail]; 
       NSData *thumburlData = [NSData dataWithContentsOfURL:thumburl]; 

       NSString *thumbfilename = [NSHomeDirectory() stringByAppendingString:[NSString stringWithFormat:@"/Documents/thumbnail/%@.jpg", thumbcacheFileName]]; 
       [thumburlData writeToFile:thumbfilename options: NSDataWritingAtomic error: &error]; 

      } 

クラッシュ後にアプリケーションを起動すると、停止した場所からダウンロードが続行されます。誰もが同じ問題を抱えていた?前もって感謝します。

+0

クラッシュレポートの詳細を教えてください。 – tarmes

+0

クラッシュレポートの詳細を確認できますか? – Ryan

+0

詳細も。ファイルをダウンロード中にこのエラーも発生しています。 "SendDelegateMessage(NSInvocation *):デリゲート(_selectionLayoutChangedByScrolling :)が10秒待ってから復帰できませんでした。メイン実行ループモード:_kCFURLConnectionPrivateRunLoopMode"おそらく問題と関係があります。 – Ryan

答えて

2

あなたはおそらく正しい方法ではない(あなたのLowMemoryコメントによって裏付けされている)メモリに400MBのファイルをロードしようとしている可能性があります。応答を受け取ったときにファイルを開き、そのファイルにすべてのバイトを直接追加します(NSDataに保持しない)。NSURLConnectionデリゲート

+0

私はすでにこのようなものを構築しようとしていましたが、これを試してみましょう!答えをありがとう! – Ryan

関連する問題