美文网首页梦想者程序员的故事程序员
【iOS】Swift之函数闭包,类似Objective-c中的B

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

作者: 独酌丿红颜 | 来源:发表于2015-12-18 15:55 被阅读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)
               
       }
    

    相关文章

      网友评论

      本文标题:【iOS】Swift之函数闭包,类似Objective-c中的B

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