【发布时间】:2020-02-06 19:05:50
【问题描述】:
我有一个函数,如果当前不执行,我只想执行它。 我使用了一个 bool 变量来检查当前的执行情况。
Swift 是否提供了任何其他解决方案来处理此问题而不是使用 Bool?
guard
!isExecuting,
let currentNavVC = tabBarController.selectedViewController as? UINavigationController
else { return }
isExecuting = true
let first = currentNavVC.viewControllers.first,
let last = currentNavVC.viewControllers.last
var controllers = [first]
if first != last {
controllers = [first, last]
}
DispatchQueue.main.async {
currentNavVC.viewControllers = controllers
isExecuting = false
}
布尔变量:isExecuting
注意:
尝试使用 Semaphores(DispatchSemaphore) 但它们没有帮助。
我也在 didReceiveMemoryWarning() 中调用上述函数
任何帮助都将不胜感激并提前致谢!!
【问题讨论】:
-
这段代码应该没有问题,除非你打算在
DispatchQueue闭包之后使用isExecuting并期望它是false -
代码执行正常,但我想知道是否可以不使用bool。 @vadian
-
为什么?这是一个相当合理的方式。
-
您可以检查视图控制器的计数。类似
currentNavVC.viewControllers.count != 2 -
currentNavVC.viewControllers.count != 2 将无济于事,因为该函数被多次调用。我已经从 didReceiveMemoryWarning() @Desdenova 调用了该函数
标签: ios swift cocoa-touch boolean