iOS-网络数据请求-异步图片下载

iOS-网络数据请求-异步图片下载
iOS-网络数据请求-异步图片下载
//
// ViewController.m
// 网络数据请求-图片下载
//
// Created by YIem on 16/3/1.
// Copyright © 2016年 YIem. All rights reserved.
//

import "ViewController.h"

@interface ViewController ()
// 图片
@property (nonatomic, retain) UIImageView *imageV;
@end

@implementation ViewController

  • (void)dealloc
    {

    [_imageV release];
    [super dealloc];

    }

  • (void)viewDidLoad {

    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    self.view.backgroundColor = [UIColor cyanColor];
    UIButton *imageButton = [UIButton buttonWithType:UIButtonTypeSystem];
    imageButton.frame = CGRectMake(100, 100, 100, 100);
    [imageButton setTitle:@"下载图片" forState:UIControlStateNormal];
    [imageButton addTarget:self action:@selector(imageAction) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:imageButton];
    
    self.imageV = [[UIImageView alloc] initWithFrame:CGRectMake(100, 200, 300, 200)];
    _imageV.backgroundColor = [UIColor redColor];
    [self.view addSubview:_imageV];
    [_imageV release];

    }

  • (void)imageAction
    {

    NSURL *url = [NSURL URLWithString:@"http://yiem.net/usr/uploads/2016/01/3648146106.jpg"];
    NSURLSession *session = [NSURLSession sharedSession];
    NSURLSessionDownloadTask *dowImageTask = [session downloadTaskWithURL:url completionHandler:^(NSURL * _Nullable location, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        // 获取本地文件对应的路径
        NSString *cach = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)lastObject];
        // 拼接文件的名字(系统建议的名字)
        NSString *file = [cach stringByAppendingPathComponent:response.suggestedFilename];
        NSFileManager *fileM = [NSFileManager defaultManager];
        // 将下载的数据由临时文件移动到本地路径
        [fileM moveItemAtPath:location.path toPath:file error:nil];
        // 就图片铺建显示
        _imageV.image = [UIImage imageWithContentsOfFile:file];
    }];
    // 开始任务
    [dowImageTask resume];

    }

  • (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.

    }

@end