2

更新:

我写了一个非常简单的下载代码:

NSArray       *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString  *documentsDirectory = [paths objectAtIndex:0];

NSURLRequest* request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://xxxx.s3.amazonaws.com/products/ipad/xxxx.mp4"]];
for(int i=0; i<4; i++){
    NSString  *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,[NSString stringWithFormat:@"xxxx%d.mp4",i]];
    AFDownloadRequestOperation* operation = [[AFDownloadRequestOperation alloc] initWithRequest:request targetPath:filePath shouldResume:YES];
    operation.outputStream = [NSOutputStream outputStreamToFileAtPath:filePath append:NO];
    [operation setShouldOverwrite:YES];
    [operation setProgressiveDownloadProgressBlock:^(AFDownloadRequestOperation *operation, NSInteger bytesRead, long long totalBytesRead, long long totalBytesExpected, long long totalBytesReadForFile, long long totalBytesExpectedToReadForFile) {
        NSLog(@"%f", ( totalBytesRead / (float)totalBytesExpected));
    }];
    [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSLog(@"finished");
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(error.description);
    }];
    [[NSOperationQueue mainQueue] addOperation:operation];
}

我在我的项目 viewDidLoad 中写了它,注释掉了所有其他代码。内存使用量仍然相同并且还在增加:

在此处输入图像描述

我创建了一个新项目,并在新项目中编写了完全相同的代码。内存使用情况为:

在此处输入图像描述

哪个好。但我不明白为什么它在实际项目中有所不同?

4

4 回答 4

5

我猜你打开了僵尸模式。Product -> Scheme -> Edit Scheme
取消勾选 [Enable Zombie Object]

在此处输入图像描述

于 2013-11-19T03:12:29.213 回答
1

这很尴尬。我创建了一个新项目,并复制了相同的代码,并且它在没有内存警告的情况下工作。下载操作不影响内存。我不明白这个问题。也许是因为项目设置。

于 2013-10-06T15:10:45.867 回答
0

我也发生了同样的事情。禁用僵尸对象对我有用。

于 2014-03-03T11:54:34.620 回答
-2

尝试使用 NSOperationQueue 手动下载

过来

于 2013-10-03T13:06:00.367 回答