我是swift 2中的初学者,我正在尝试创建程序块,同时只显示一个进度微调器,直到某些操作完成,我在一个按钮中创建了代码片段,其中的操作是“内部触摸”,我的问题是,在调试时,一旦我点击我的按钮并保持高电平直到标志改变其值,Xcode 7 CPU使用率跳升到190%,CPU使用率是否正常跳转?这也是一个好习惯吗?以下片段或shud我在我的无限循环中使用睡眠或其他机制?
let queue2 = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
dispatch_async(self.queue2) { () -> Void in
while(flag == true)
{
//wait until flag sets to false from previous func
}
self.dispatch_main({
//continue after the flag became false
})
答案 0 :(得分:1)
这是一个非常经济的完成处理程序
if( jQuery(this).position().left < halfScreenWidth )
或附加调度到主队列以更新UI
func test(completion:() -> ())
{
// do hard work
completion()
}
let queue2 = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
dispatch_async(queue2) {
test() {
print("completed")
}
}
答案 1 :(得分:0)
这是完全错误的方法,因为您正在使用while循环等待。你应该使用Completion Handler来实现这种目标。
完成处理程序是回调,允许客户端在框架方法或函数完成其任务时执行某些操作。通常,客户端使用完成处理程序来释放状态或更新用户界面。几种框架方法允许您将完成处理程序实现为块(而不是代理方法或通知处理程序)。
有关详细信息,请参阅Apple documentation。
答案 2 :(得分:0)
我想你有一种管理这些“一些操作完成”的类。
完成操作后,您可以通过完成处理程序或委派进行通信。同时,您可以禁用UI的用户交互,直到这些操作结束。
如果您提供有关后台操作的更多信息,我可以添加一些代码片段。