switf4闭包

  1. // 第二种方式:使用闭包方式  
  2.  // 完整闭包写法是在花括号内有参数列表和返回值,用关键字in表明闭包体的开始  
  3.  // (firstString: String, secondString: String) 闭包参数列表  
  4.  // -> Bool 指明闭包返回值类型是Bool  
  5.  // in关键字表明闭包体的开始  
  6.  reversed = sort(names, { (firstString: String, secondString: String) -> Bool in  
  7.     return firstString > secondString  
  8.     })  
  1. /* 
  2.  * 尾随闭包(Trailing Closures) 
  3.  * 如果函数需要一个闭包参数作为参数,且这个参数是最后一个参数,而这个闭包表达式又很长时, 
  4.  * 使用尾随闭包是很有用的。尾随闭包可以放在函数参数列表外,也就是括号外。如果函数只有一个参数, 
  5.  * 那么可以把括号()省略掉,后面直接跟着闭包。 
  6.  */   
  7. // Array的方法map()就需要一个闭包作为参数  
  8. let strings = numbers.map { // map函数后面的()可以省略掉  
  9.   (var number) -> String in  
  10.   var output = ""  
  11.   while number > 0 {  
  12.     output = String(number % 10) + output   
  13.     number /= 10  
  14.   }  
  15.   return output  
  16. }  

格式

()->()

闭包可选 是否为空可以强行解包

 var comblock:(()->())?

  comblock?()

跳转 传值时 可以判断是否为空

第一个页面

 let vc = WorkindetailViewController()

        

         vc.workModer = model

        //返回时

        vc.comblock = {

            

            

    //返回时的改变值

            print(self.model.testname)

            

            

            

        }

        

        navigationController?.pushViewController(vc, animated: true)

        print("点击")

        

第二个页面

@objc func click(){

    

      workModer?.testname = "肯定"

 //不用判断

        comblock?()

    navigationController?.popViewController(animated: true)

    

    

    

    }

一天一章
原文地址:https://www.cnblogs.com/hangman/p/8425891.html