import UIKit
var str = "Hello, playground"
//逃逸闭包
//闭包做为函数的参数传递时,可能会在函数体结束后被调用,这个闭包逃离了这个函数体的作用域,那么我们就说这个闭包是逃逸型的闭包
func testClosure(closure:@escaping ()->Void){
print("test")
//这个闭包的在主线程中调用
DispatchQueue.main.async {
closure()
}
}
testClosure {
print("111")
}
//defer 延迟执行
func TestFuncDefer()->Int{
//执行顺序是倒叙
print("111")
defer {
sleeps()
}
print("333")
return 3
}
func sleeps(){
print("222")
}
TestFuncDefer()
//使用案例
//
let _testLock = NSLock.init()
var _testCount:Int = 0
var testCount:Int{
set{
_testLock.lock()
defer {
_testLock.unlock()
}
_testCount = newValue
}
get{
_testLock.lock()
defer {
_testLock.unlock()
}
return _testCount
}
}
关键字
1. private < fileprive < internal < public < open 访问控制权限
2. private 访问级别,所修饰的属性和方法 只能在当前类中访问
3.fileprive 访问级别,.............. .................当前的swift 源文件荔可以访问
4.internal 访问级别...................在源代码所在的整个模块都可以访问
4.1如果是框架或者库代码,则在整个框架内都可以访问,框架由外部代码所引用时,则不可以访问
5. public 可以被任何人访问,但其他模块中不可以被override和继承,在当前模块是可以的
6. open 什么都行