swift中的block的创建和使用

本文介绍了Swift中的闭包(在Objective-C中称为Block),通过一个图片下载的实例详细阐述了如何创建和使用闭包。首先定义了SuccessBlock和ErrorBlock类型别名,分别对应下载成功的回调和错误的回调。接着在ImageDownLoad类中声明了相关属性,并实现了成功和失败的闭包设置方法。在NSURLConnection的代理方法中,实现了传递值给闭包的功能,以便在图片下载完成后调用成功或错误回调。

在OC中叫block,在swift中叫闭包。。

使用一个图片下载的案例来说明下闭包的使用

import UIKit

//定义闭包

typealias  SuccessBlock = ( imageDownload : ImageDownLoad,image: UIImage) ->Void

typealias  ErrorBlock = (imageDownload : ImageDownLoad,error: NSError)->Void




class ImageDownLoad: NSObject {

//    在类里面声明属性成功和失败案例

    var successBlock : SuccessBlock?

    var errorBlock : ErrorBlock?

    

    var reveiceData = NSMutableData()

    let urlStr :String

    init(str :String)

        {

            self.urlStr = str;

            super.init()

            let url  = NSURL.init(string: str);

            print(url);

            let  request = NSURLRequest(URL: url!);

            let  connect = NSURLConnection.init(request: request, delegate: self);

             connect! .start();

            

        }

//    实现的两个方法

    func MySuccessClosure(successMyBlock:SuccessBlock) -> Void {

        successBlock = successMyBlock;

    }

    

    func MyErrorClosure(errorMyBlock :ErrorBlock) -> Void {

        errorBlock = errorMyBlock;

    }

    

//    在connection的代理里面传值

    func connection(connection: NSURLConnection, didFailWithError error: NSError){

        errorBlock!(imageDownload:self,error:error);

    }

    func connection(connection: NSURLConnection, didReceiveData data: NSData)

    {

        reveiceData.appendData(data);

    

    }

    func connectionDidFinishLoading(connection: NSURLConnection)

    {

        let image = UIImage.init(data: reveiceData);

        successBlock!(imageDownload: self,image: image!);

        

    }


}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值