小编ohr*_*ohr的帖子

从服务器下载和保存大量图像时的iOS内存问题(ARC)

以下代码从不同大小的服务器下载700多个图像,这里的问题是内存(即使使用ARC)永远不会被释放,最终会出现内存警告,然后应用程序退出.我在这种方法中尝试了@autoreleasepool,但似乎没有用.此外,我已经尝试在不同的位置停止for循环,以查看内存是否在完成后释放,但事实并非如此.

此方法在for循环内调用,并接收图像URL和短名称.它已经在后台线程和主线程中尝试了相同的结果(内存方面).

-(void)saveImage:(NSString*)image name:(NSString*)imageName{     
    int k = 0;
    for (int j = 0; j < [imageName length]; j++) {
        if ([imageName characterAtIndex:j] == '/') {
            k = j;
        }
    }if (k != 0) {
        imageName = [imageName substringFromIndex:k+1];
    }    

    NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@", imageName]]; 

    if ([fileManager fileExistsAtPath:fullPath]) {
        [fileManager removeItemAtPath:fullPath error:nil];
    }

    NSURL *url = [NSURL URLWithString:image];
    NSData *data = [[NSData alloc]initWithContentsOfURL:url];
    NSLog(@"Saved: %d:%@", [fileManager createFileAtPath:fullPath contents:data attributes:nil], url); 
    data = nil;
}  


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions …
Run Code Online (Sandbox Code Playgroud)

memory image download nsfilemanager ios

4
推荐指数
1
解决办法
3613
查看次数

标签 统计

download ×1

image ×1

ios ×1

memory ×1

nsfilemanager ×1