swift闭包 以及与oc的block转换

2016-11-02  本文已影响0人  A酱7

数组  sorted函数  需要(x,y)->bool  类型,返回true,则说明x,y顺序正确,否则替换x,y

闭包 语法

{ (参数) - > (返回类型)  in

具体描述

}

闭包的书写形式 是可以  省略的,具体的省略形势可以查看文档,这里不做具体的描述

尾随闭包

声明:

funcsomeFunctionThatTakesAClosure(closure: () ->Void) {

// function body goes here

}

函数调用的方法

someFunctionThatTakesAClosure(closure: {

// closure's body goes here

})

尾随闭包的调用方法

someFunctionThatTakesAClosure() {

// trailing closure's body goes here

}

需要注意的是  尾随闭包的函数声明最后一个参数必须是 以函数  为参数,否则不能使用尾随的形式

若不是最后一个参数,就只能使用函数调用的形式了,上边已经写明

闭包 和OC的block  的概念类似,所以可以以block的形式理解闭包的概念

OC  的block  与 swift 的closure  互换例子

oc:

@property (nonatomic,copy) void(^testBlock)(nsstring * name)

cell.testBlock = ^(nesting * name){

block的回调方法

};

声明

+(void)blockWithtest:(testBlock)block {

};

调用

blockWithtest:^(id category) {

nslog(@“%@“,category);

}

swift:

var testClosure:{ (name:String) -> () } ?

cell.testClosure = {

(name) -> Void in

闭包的回调方法

}

声明

fun blockWithtest( (id category)-> Void ){

};

调用

blockWithtest{

( category ) -> Void in

调用方法

}

上一篇 下一篇

猜你喜欢

热点阅读