gpt4 book ai didi

ios - 如何暂停函数的执行,直到完成 block 被执行?

转载 作者:行者123 更新时间:2023-11-30 14:17:00 30 4
gpt4 key购买 nike

我的功能是这样的:

class function functionName(..args) ->NSData {

var data : NSData?

object1.operation(arg1,arg2, onComplete:{

(error:NSError) -> Void in

/*My Code For Downloading data goes Goes Here*/
data = downloadedData
})

return data

}

所以,发生的事情是在执行 object1.operation 之前,我的代码正在执行 return data 语句。

如何在 object1.operation 方法完成之前阻止函数的进一步执行?我尝试过 dispatch_semaphonedispatch_groupdispatch_asyncdispatch_sync 等 .. 它们都没有帮助。 p>

最佳答案

你可以这样做:

func url(absoluteURL: String, method: String, completion: ((nsData: NSData?) -> Void)!) {

_rawURL = NSURL(string: absoluteURL)
_request = NSMutableURLRequest(URL: _rawURL)

_request.HTTPMethod = method

//Async Task
var task: NSURLSessionDataTask = _session.dataTaskWithRequest(_request) {
(data: NSData!, response: NSURLResponse!, error: NSError!) -> Void in

if (error == nil) {
var httpResponse: NSHTTPURLResponse = response as! NSHTTPURLResponse

if (httpResponse.statusCode == 200) {

dispatch_async(dispatch_get_main_queue()) {
completion(nsData: data);
}
}
}

}

task.resume()
}

这只是示例代码,但您可以在此处了解如何在函数签名上使用完成 block ......

关于ios - 如何暂停函数的执行,直到完成 block 被执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31025640/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com