Swift关键字

2020-05-06  本文已影响0人  iOS白水

1.@escaping
标明这个闭包是会“逃逸”,通俗点说就是这个闭包在函数执行完成之后才被调用

func doWork(block:()->()) {
print("header")
block()
print("footer")
}
doWork {
print("work")
}
想对上面 异步逃逸
func doWorkAsync(block: @escaping () -> ()) {
DispatchQueue.main.async {
block()
}
}

2.open与public区别
2.1修饰class
public修饰的class只允许外部模块调用,但是不允许继承。 而open修饰的class既允许其他模块调用,也允许被子类继承

2.2修饰class成员。
public修饰的成员只允许其他模块调用,但不能被覆盖(override)。而open修饰的成员既允许被其他模块调用,也允许成员被覆盖

  1. defer 类似finally
    func foo() {
    defer {
    print("finally")
    }
    do {
    throw NSError()
    print("impossible")
    } catch {
    print("handle error")
    }
    }
上一篇下一篇

猜你喜欢

热点阅读