第一個
@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")