第一个
@autoclosure
写一个判断 当第一个条件不成立的时候 , 就不会去判断第二个条件
func twogothrough(_ l : Bool, _ r : @autoclosure ()->Bool) -> Bool {
guard l else {
return false
}
return r()
}
if twogothrough(true, true ) {
print("两个都成立")
}
第二个
DispatchSemaphore
信号量
let sema = DispatchSemaphore.init(value: 0)
let time1 : TimeInterval = 3.0
DispatchQueue.global().asyncAfter(deadline: DispatchTime.now() + time1) {
sema.signal()
}
let time : TimeInterval = 2.0
let result = sema.wait(timeout: DispatchTime.now() + time)
if result == .success {
print("success")
}else{
print("timeOut")
}
print("sema")