pkc*_*456 1 semaphore dispatch ios swift3
我正在使用以下代码objective C来处理信号量。
-(void)doSome{
semaphore = dispatch_semaphore_create(0);
BaseViewController *baseVC = [[BaseViewController alloc]init];
if(baseVC.isUserObjectExist){
[self callLoginWebService:baseVC.userObject.username passwordString:baseVC.userObject.password];
}else{
dispatch_semaphore_signal(semaphore);
}
while (dispatch_semaphore_wait(semaphore, DISPATCH_TIME_NOW)) { //2
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:100]];
}
}
Run Code Online (Sandbox Code Playgroud)
但
'dispatch_semaphore_t' 在 Swift 中不可用
如何在swift 3中集成信号量?
你可以通过创建
let semaphore = DispatchSemaphore(value: 0)
Run Code Online (Sandbox Code Playgroud)
或从其他代码
let url = URL(string: "")
let semaphore = DispatchSemaphore(value: 0) // 1
let _ = DownloadPhoto(url: url!) {
_, error in
if let error = error {
}
semaphore.signal() // 2
}
let timeout = DispatchTime.now() + .seconds(5)
if semaphore.wait(timeout: timeout) == .timedOut { // 3
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3419 次 |
| 最近记录: |