【iOS】Swift之函数闭包,类似Objective-c中的B
2015-12-18 本文已影响528人
独酌丿红颜
前言
-
1.闭包是功能性子包含模块,可以在代码中被传递和使用。在Swift中的闭包与C和Obective-C 中的block 比较相似,通常我们这么使用的。
-
2.闭包的第一种形式: 全局函数是一个有名字但不会捕获任何的的闭包,
{
(参数 : 类型) - > 返回类型 in
执行方法
return 返回类型;
let arr = GetList( [1,2,3,4]), {(s:int) in return s>2} )
println(arr)
}
- 3.上面的代码可以看出,{(s:int) in return s>2}就是一个闭包的实现。GetList参数Pre:(int)->Bool 是一个函数,没有实现,在调用的时候传人闭包 {(s:int) in return s>2} 来实现具体的算法,{(s:int) in return s>2}闭包参数为整形,返回值为布尔类型;
示例
- 1.跟在OC当中使用一样,我们的首先定义一个Block 类型,这里是定义一个闭包类型;
- 2.声明一个block变量,同样的这里定义一个闭包函数变量;
/// 这是一个函数闭包变量
typealias myfunction = (SXstr:NSString) ->Void;
// 定义函数变量
var myBlock = myfunction?()
- 3.这里示例在一个点击事件中,回调一个字符串,(SXstr: "你好!")作为示例
/**
在一个点击事件中传递闭包函数的变量:
*/
func Tap()->Void
{
//值传递字符串
myBlock!(SXstr: "你好!")
self .dismissViewControllerAnimated(true, completion: nil)
}
- 4.函数作为值调用闭包函数。
func Long(Block:myfunction)->Void
{
myBlock = Block;
}
- 5.调用闭包函数
// 调用闭包函数
myVC.Long { (SXstr) -> Void in
print(SXstr)
}