Swift常见知识点汇总

1.swift4.0fileprivate属性和private区别

在swift4.0中 fileprivate修饰的属性,能在当前文件内访问到,不管是否在本类的作用域;
private 只能在本类的作用域且在当前文件内能访问

2.用Swift实现一个死锁(5分)

死锁,通常指有两个线程T1和T2都卡住了,并等待对方完成某些操作
同步任务死锁:当前是在主线程,让主队列执行同步任务!

override func viewDidLoad() {
    super.viewDidLoad()
    print(1)
    DispatchQueue.main.sync {
        print(Thread.current)
    }
}
//程序会崩溃,因为viewDidLoad()里面执行的任务和DispatchQueue.main.sync执行的任务互相等待造成死锁。

3.给一个数组,要求用swift写一个函数, 交换数组中的元素

    func exchange(_ nums: inout[T], _ a:Int, _ b:Int){
        let count = nums.count;
        if a == b || a < 0 || a > count - 1 || b < 0 || b > count - 1  {
            return
        }
        //元祖
        (nums[a], nums[b]) = (nums[b], nums[a])
    }

4.使用Swift 实现一个函数, 输入时是任一整数,输出要返回输入的整数+2

    ///什么是柯里化? 指的是从一个多参数函数变成一连串单参数函数的变换
    func add(input:Int)->(Int) -> Int {
        return { value in
            return input + value
        }
    }
    let addTwo = add(input: 100)
    let outPut = addTwo(3)
    }

5. guard let 和 if let 联用

     ///1. if let 和可选链式调用
    func division1(dividend: Double?, by divisor:Double?) -> Double? {
        
        if let dividend = dividend, let divisor = divisor, divisor != 0 {
            return dividend / divisor
        }
        return nil
    }
    ///2. guard let 和可选链式调用
    func division2(dividend: Double?, by divisor:Double?) -> Double? {
        
        guard let dividend = dividend, let divisor = divisor, divisor != 0  else{
           return nil
        }
        return dividend / divisor
    }

6. 这段代码打印出来会是什么?

var car = "Benz"
let closure = { [car] in
     print("I drive a \(car)")
}
car = "BMW"
closure()
//I drive a Benz
//去掉[car] in 结果是 I drive a BMW

你可能感兴趣的:(Swift常见知识点汇总)