美文网首页
swift闭包 以及与oc的block转换

swift闭包 以及与oc的block转换

作者: A酱7 | 来源:发表于2016-11-02 16:12 被阅读0次

数组  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

调用方法

}

相关文章

网友评论

      本文标题:swift闭包 以及与oc的block转换

      本文链接:https://www.haomeiwen.com/subject/suoskttx.html