Xcode 线程完成时,Swift 2按钮标签文本更改
我正在运行一系列调度,当最后一个调度完成时,我想更改按钮的标签。然而,更改swift与在主线程之外进行UI组件更改不同。有时它是有效的。有时候不是。奇怪的是,如果没有,如果我单击断点图标(不管我是激活所有断点还是禁用断点),标签会立即根据需要更改Xcode 线程完成时,Swift 2按钮标签文本更改,xcode,multithreading,swift2,nsoperation,dispatch-async,Xcode,Multithreading,Swift2,Nsoperation,Dispatch Async,我正在运行一系列调度,当最后一个调度完成时,我想更改按钮的标签。然而,更改swift与在主线程之外进行UI组件更改不同。有时它是有效的。有时候不是。奇怪的是,如果没有,如果我单击断点图标(不管我是激活所有断点还是禁用断点),标签会立即根据需要更改 @IBAction func runButtonSelected(sender: AnyObject) { runButton.setTitle("Stop Run", forState: UIControlState.Norm
@IBAction func runButtonSelected(sender: AnyObject) {
runButton.setTitle("Stop Run", forState: UIControlState.Normal)
isRunning = true
self.run()
}
请求执行
func execute() {
let session = NSURLSession.sharedSession()
let request = NSMutableURLRequest(URL: URL)
request.HTTPMethod = self.method
request.HTTPBody = self.params.dataUsingEncoding(NSUTF8StringEncoding)
self.task = session.dataTaskWithRequest(request) {
(data, response, error) in
if error == nil {
do {
.
.
.
.
switch self.statusCode {
case 200:
self.contentsOfURL = try NSString(contentsOfURL: self.URL, encoding: NSUTF8StringEncoding)
case 400:
print("400: page not found")
case 404:
print("404: page not found")
case 407:
print("407: failed authenticate proxy credentials")
default:
print("unable to get statusCode")
}
} catch {
print(error)
}
self.isRequesting = false
} else {
print(error)
}
}
self.task.resume()
}
由于您希望您的最终调度在其他调度之后对块执行,请尝试:
void dispatch_async( dispatch_get_main_queue(), dispatch_block_t block);
这将使用与应用程序主线程相关联的串行调度队列,而不是像上一个队列那样在后台运行。因为您希望在其他调度尝试后对块执行最终调度:
void dispatch_async( dispatch_get_main_queue(), dispatch_block_t block);
这将使用与应用程序主线程关联的串行调度队列,而不是像上一个那样在后台运行。可以尝试使用
dispatch\u async(dispatch\u get\u main\u queue(),…
用于线程2。@我会成功的!谢谢。如果您将其作为答案提交,我会将其标记为已回答。可能尝试对线程2使用调度异步(调度获取主队列(),…
。@我会成功的!谢谢。如果您将其作为答案提交,我会将其标记为已回答。