【iOS】Swift之函数闭包,类似Objective-c中的Block

前言

  • 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)
           
   }

你可能感兴趣的:(【iOS】Swift之函数闭包,类似Objective-c中的Block)