• imageDownloader


    .h

    #import <UIKit/UIKit.h>

    @protocol imageDownloadDelegate <NSObject>

    @optional

    -(void)imageDownloadWithImage:(UIImage *)image;

    @end

    // 声明一个block 参数类型是UIImage 返回值是void 别名Result

    typedef void(^Result)(UIImage *img);

    @interface ImageDownload : NSObject

    #pragma mark - 声明方法  被调用后直接下载

    +(void)imageDownloadWithUrlStr:(NSString *)urlStr

                          delegate:(id<imageDownloadDelegate>)delegate;

    #pragma mark - 声明方法 使用block的方式

    +(void)imageDownloadWithUrlStr:(NSString *)urlStr

                            result:(Result)result;

    @end

     
    .m

    #import "ImageDownload.h"

    @implementation ImageDownload

    #pragma mark - 实现方法 代理

    +(void)imageDownloadWithUrlStr:(NSString *)urlStr

                          delegate:(id<imageDownloadDelegate>)delegate

    {

        NSURL *url = [NSURL URLWithString:urlStr];

        NSURLRequest *request = [NSURLRequest requestWithURL:url];

        [NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue new]autorelease] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

            UIImage *image = [UIImage imageWithData:data];

            dispatch_sync(dispatch_get_main_queue(),^{

                if (delegate!=nil && [delegate respondsToSelector:@selector(imageDownloadWithImage:)]) {

                    [delegate imageDownloadWithImage:image];

                }

            });

        }];

    }

    #pragma mark - 实现方法  block 方式

    +(void)imageDownloadWithUrlStr:(NSString *)urlStr

                            result:(Result)result

    {

        NSURL *url = [NSURL URLWithString:urlStr];

        NSURLRequest *request = [NSURLRequest requestWithURL:url];

        [NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue new]autorelease] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

            UIImage *image = [UIImage imageWithData:data];

            

            // 回到主线程使用block

            dispatch_sync(dispatch_get_main_queue(), ^{

               // block 调用

                result(image);

            });

        }];

    }

    再去 ViewController 

    - (IBAction)buttonAction:(UIButton *)sender

    {

        /*

       //http://img4.duitang.com/uploads/item/201208/10/20120810091225_hvA2r.thumb.700_0.jpeg

        //1 NSURL

        NSURL *url = [NSURL URLWithString:@"http://img4.duitang.com/uploads/item/201208/10/20120810091225_hvA2r.thumb.700_0.jpeg"];

        

        //2 NSURLREQUEST

        NSURLRequest *request = [NSURLRequest requestWithURL:url];

        

        //3 NSURLConnection

        

        __block ViewController *weakSelf = self;

        [NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue new]autorelease] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

            //4 获取data数据  转为UIImage类型

            UIImage *image = [UIImage imageWithData:data];

            //5 回到主界面 刷新数据

            dispatch_sync(dispatch_get_main_queue(),^{

                weakSelf.imageView.image = image;

            });

        }];

         */

        // 直接发送消息 设置代理

        // [ImageDownload imageDownloadWithUrlStr:@"http://img4.duitang.com/uploads/item/201208/10/20120810091225_hvA2r.thumb.700_0.jpeg" delegate:self];

        

        // 使用block

        __block ViewController *weakSelf = self;

        [ImageDownload imageDownloadWithUrlStr:@"http://img4.duitang.com/uploads/item/201208/10/20120810091225_hvA2r.thumb.700_0.jpeg" result:^(UIImage *img)

         {

             // 将block中参数显示到UIImageView上

             weakSelf.imageView.image = img;

         }];

    }

    @end

    我不负责生产代码,我是博客园搬运工~
  • 相关阅读:
    如何在iPhone 显示一个 星级评分
    Swift调用Objective-C
    Swift中的注释以及表达式
    Swift常量和变量以及命名规范
    Swift标识符和关键字
    使用Playground编写第一个Swift程序
    Cocos2d-x实例:设置背景音乐与音效-设置场景实现
    Cocos2d-x实例:设置背景音乐与音效-HelloWorld场景实现
    Cocos2d-x实例:设置背景音乐与音效- AppDelegate实现
    Cocos2d-x中背景音乐播放暂停与继续
  • 原文地址:https://www.cnblogs.com/masami521/p/4724364.html
Copyright © 2020-2023  润新知