zoukankan      html  css  js  c++  java
  • Swift 中的基础语法(二)

    1.Swift 中的函数

     /// 函数的定义
        ///
        /// - Parameters:
        ///   - x: 形参
        ///   - y: 形参
        /// - Returns: 返回值
        func sum(x: Int, y: Int) -> Int {
            return x + y
        }

        print(sum(x: 10, y: 20))

     
       /*
            外部参数就是在形参前面加了一个字
         外部参数不会影响函数内部的细节
         外部参数会让外部调用看起来更加直观
         外部参数如果使用了'_',在外部调用函数时,会忽略形参的名字
         "_" 就是可以忽略任意不感兴趣的内容
         */
        func sum1(num1 x: Int, num2 y:Int) -> Int {
            
            return x + y;
        }

        print(sum1(num1: 10, num2: 20))

     
     func sum2(_ x: Int, _ y:Int) -> Int {
            return x + y;
        }
        print(sum3())

    设置默认值的函数

       // 默认值
        func sum3(x: Int = 1, y: Int = 2) -> Int {
            return x + y
        }
    这里比较灵活

    print(sum3(x: 10, y: 20))
    print(sum3(x: 10))
    print(sum3(y: 20))

     

    无返回值的函数

      func demo1() {
            print("哈哈")
        }
        
        func demo2() -> (){
            print("呵呵")
        }
        
        func demo3() -> Void {
            print("嘻嘻")
        }

    demo1()
    demo2()
    demo3()

     

    2.闭包

     // 1.闭包,最简单的闭包
            //n 如果没有参数,没有返回值 可以省略 连 in 都一起省略
            // option + click
            let  b1 = {
                print("hello")
            }
            b1()

     

        // 带参数的闭包
            //闭包中,参数,返回值 实现的代码都是写在{}中
            // 需要使用一个关键字 “in” 分隔定义和实现
            // {形参列表 -> 返回值类型 in // 实现代码}
            let b2 = {
                (x: Int) -> () in
                print(x)
            }
            
          b2(100)
       //带参数 带会返回值的闭包
            let b3 = {
                (x: Int) -> Int in
                
                return x + 1
            }
            print(b3(10))

    需要注意的是

         // 如果函数的最后一个参数是闭包 函数参数可以提前结束,最后一个参数直接使用{}包装闭包的代码

     3.swift 解决循环引用的办法

      1.仿照OC 解决

      

     //弱引用的对象 又一次执行 nil的机会
            weak var weakSelf = self
            loadData { (result) in
                print(result,weakSelf)
            }
        }
        //[weak self] 和 __weak typeof(self) 作用类似  -> 对象被回收是 内存地址会自动指向nil  更加安全 推荐使用这种方式
        func methodInSwift1() {
            loadData { [weak self] (result) in
                print(result,self)
            }
        }
        // [unowned self] 和 __unsafe__retained作用类似  -> 对象被回收是 内存地址不会自动指向nil 会造成野指针访问
        
        func methodInSwift2() {
    
            loadData { [unowned self] (result) in
                print(result,self)
            }
        }
  • 相关阅读:
    ps | grep排除grep这个进程
    树莓派3B安装LEDE
    从路由器镜像中提取uImage头信息
    提取路由器固件中的squashfs
    javascript监听按键
    linux 英汉词典程序shell+postgresql版
    树莓派(centos7)安装mysql
    在线视频下载利器——youtube-dl
    使用curl自动签到百度贴吧
    极路由hc5661安装tcpdump
  • 原文地址:https://www.cnblogs.com/qianLL/p/6597057.html
Copyright © 2011-2022 走看看