gpt4 book ai didi

ios - 在 ios 上的其他线程上运行 http 请求

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:09:56 28 4
gpt4 key购买 nike

所以我希望我的应用程序在发送 http 请求和获取响应时不要锁定 GUI,我尝试了,但它提示说我在主线程之外使用了 uikit,有人可以告诉我正确的分离方式吗http 和 gui?

-(void)parseCode:(NSString*)title{

UIActivityIndicatorView *spinner;
spinner.center = theDelegate.window.center;
spinner.tag = 12;
[theDelegate.window addSubview:spinner];
[spinner startAnimating];

dispatch_queue_t netQueue = dispatch_queue_create("com.david.netqueue", 0);

dispatch_async(netQueue, ^{
NSString *url =[NSString stringWithFormat:@"http://myWebService.org/"];
// Setup request
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:url]];
[request setHTTPMethod:@"POST"];
NSString *contentType = [NSString stringWithFormat:@"application/x-www-form-urlencoded"];
[request addValue:contentType forHTTPHeaderField:@"Content-Type"];

NSMutableString *data = [[NSMutableString alloc] init];
[data appendFormat:@"lang=%@", @"English"];
[data appendFormat:@"&code=%@", theDelegate.myView.text ];
[data appendFormat:@"&private=True" ];
[request setHTTPBody:[data dataUsingEncoding:NSUTF8StringEncoding]];
NSHTTPURLResponse *urlResponse = nil;
NSError *error = [[NSError alloc] init];

NSData *responseData = [NSURLConnection sendSynchronousRequest:request
returningResponse:&urlResponse
error:&error];

NSString *result = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];


dispatch_async(dispatch_get_main_queue(), ^{

[spinner stopAnimating];
[spinner removeFromSuperview];
[self presentResults:result];
});

});

}

最佳答案

不使用 NSURLConnection:sendSynchronousRequest,而是使用 NSURLConnection:initWithRequest:delegate:startImmediately:,它异步发送请求。使用 NSURLConnection:connectionDidFinishLoading 委托(delegate)方法来处理响应。

Apple 在 URL Loading System Programming Guide 中提供了一个示例.

如果将 startImmediately 设置为 YES,委托(delegate)方法将在与调用请求的运行循环相同的运行循环中被调用。这很可能是您的主运行循环,因此您可以在委托(delegate)方法中随意修改 UI,而不必担心线程问题。

关于ios - 在 ios 上的其他线程上运行 http 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16858753/

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