私は大きなアプリを持っています。最初は20MBのRAMを想定していました。
たとえば、14MBのオペラをダウンロードしたいと思います。数分後、私はオペラをダウンロードしました。私のアプリケーションRAMは20から34MBに増加します。200 MBのファイルをダウンロードしたい場合、アプリが強制終了されるため、これは大きな問題です。(14 + 200)。何度か試しましたが、「メモリ警告を受け取りました」と表示され、アプリが強制終了されました。
ASIHTTPRequestは私のデータをキャッシュします。どうしてか分かりません。リクエストからすべてのコードを削除しました:didReceiveData:。しかし、それは私を助けませんでした。
重要:新しい空のプロジェクトを作成し、このコードを追加しました。このプロジェクトでは、すべてがうまく機能します。ASIHTTPRequestはデータをキャッシュしません。XCode設定を変更する必要があるかもしれませんか?
-(void) downloadOpera
{
self.currentPath = @"http://get-tsw-1.opera.com/pub/opera/mac/1164/Opera_11.64_Setup_Intel.dmg";
self.ASIRequest = [[[ASIHTTPRequest alloc] initWithURL:[NSURL URLWithString:currentPath]] autorelease];
ASIRequest.delegate = self;
ASIRequest.shouldContinueWhenAppEntersBackground = YES;
[ASIRequest setCachePolicy:ASIDoNotWriteToCacheCachePolicy];
[ASIRequest startAsynchronous];
}
- (void)request:(ASIHTTPRequest *)request didReceiveData:(NSData *)data {}
- (void)requestFailed:(ASIHTTPRequest *)request {}
- (void)requestFinished:(ASIHTTPRequest *)request {NSLog(@"download finished");}