swift中的block的创建和使用
2016-04-10 20:03
513 查看
在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!);
}
}
使用一个图片下载的案例来说明下闭包的使用
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!);
}
}
相关文章推荐
- Swift 入门基础
- Swift自定义初始化方法
- Swift 字符串的分割
- Swift编程基础(五):闭包
- swift学习笔记之基本数据类型-控制流
- Swift学习笔记之基本数据类型-数组与字典
- 【Swift学习】Swift编程之旅(三)
- swift控制流
- Swift学习笔记之基本数据类型-基本运算符
- Swift:函数式编程学习之Thinking Functionally
- 十分钟了解响应者链条(代码:swift)
- swift 汉字转拼音
- Swift高阶函数map,filter,reduce实践
- swift:基于MPMoviePlayerController的视频播放器
- Swift StateMachine源码分析
- Swift 338. Counting Bits
- [swift实战入门]手把手教你编写2048(一)
- SwiftyUserDefaults对NSUserDefaults的封装扩展
- Swift之 ? 和 !
- Swift 的流程语句和代理方法