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

 

转载于:https://www.cnblogs.com/qianLL/p/6597057.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值