我正在调用使用不同时间戳调用 URL 的方法。然而,数据处理可能需要比我定义的时间更长的时间。
[self performSelector:@selector(process) withObject:nil afterDelay:1.6];
下面部分显示了该方法的调用
-(void)process
{
timestamp=[NSString stringWithFormat:@"%1.f",progressValue];
NSString *contour=@"&bandschema=4";
NSString *url6=[NSString stringWithFormat:@"http://contour.php? callback=contourData%@&type=json×tamp=%@%@",timestamp,timestamp,contour];
NSURL *url1=[NSURL URLWithString:url6];
__weak ASIHTTPRequest *request1 = [ASIHTTPRequest requestWithURL:url1];
[request1 setCompletionBlock:^{
responseString = [request1 responseString];
[self plotPoint:self.responseString];
}];
[request1 setFailedBlock:^{
NSError *error=[request1 error];
NSLog(@"Error: %@", error.localizedDescription);
}];
[request1 startAsynchronous];
}
这部分是分析数据的起点。
-(void)plotPoint:(NSString *)request
{
NSArray *polygonArray = [[dict objectForKey:@"data"]valueForKey:@"polygon"];
NSArray *valleyPolygonArray = [[dict objectForKey:@"valley"]valueForKey:@"polygon"];
CLLocationCoordinate2D *coords;
}
但是有时时间间隔不足以获取新数据,特别是当互联网连接不好时。
你能指导一下吗?我该如何处理这个问题?最优解是什么?
最佳答案
你能提供一些代码吗? 基本上,您需要在请求完成的委托(delegate)调用中执行操作
编辑:
我还是不太明白,但看看这是否对你有帮助:
__weak ASIHTTPRequest *request1 = [ASIHTTPRequest requestWithURL:url1];
[request1 setCompletionBlock:^{
responseString = [request1 responseString];
[self plotPoint:self.responseString];
//if (something)
[self process];
}];
关于ios - 调用 PerformSelector 的最佳方式 - iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13353014/