gpt4 book ai didi

iphone - iOS:ASIHTTPRequest 在后台选择器上同步是个坏主意吗?

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

在后台选择器上运行之前,我以同步方式使用 NSURLConnection,所以当我转移到 ASIHTTPRequest 时,我对这个框架做了同样的事情。

那么,像下面这样做是不是一个坏主意?

// From another method
[self performSelectorInBackground:@selector(callDatasource) withObject:nil];


- (NSData *)callDatasource {

NSAutoreleasePool *apool = [[NSAutoreleasePool alloc] init];

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:someURLthatIamusing];
[request setTimeOutSeconds:50.0];
[request startSynchronous];
NSError *error = [request error];
NSData *returnedData;
if (!error) {
returnedData = [request responseData];
} else {
// do something with error

}

[self performSelectorOnMainThread:@selector(done) withObject:nil waitUntilDone:NO];

[apool release];

return returnedData;

}//end

将 ASIHTTPRequest 和异步方法与委托(delegate)方法一起使用有什么好处?

最佳答案

根据经验,在辅助线程之外使用 ASIHTTPRequest 同步请求时,有时会发生奇怪的事情:下载完成后状态栏中的下载事件图标不会消失是我一直注意到的一个问题时间。我过去没有遇到过大问题,但我现在使用异步方法而不是你的方法。 ASI 异步方法本质上是一个广泛使用的库,比我自己的实现更经过严格测试。

使用异步方法有很多优点——你提到了委托(delegate)方法,但最新版本的 ASI 实际上也支持 block ,这是一个巨大的飞跃(处理多个同步调用以前有点费力)由于共享委托(delegate)方法(或每个异步调用的唯一委托(delegate))而带来的痛苦。但是有了 block ,您现在可以完全摆脱委托(delegate)。我发现它们非常有用。另外,如果您使用多个贡献者,它可以使可读性更容易。

关于iphone - iOS:ASIHTTPRequest 在后台选择器上同步是个坏主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5530320/

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