코드는 아래와 같이 표시됩니다. 버튼을 클릭하면 타이머가 활성화되고 타이머는 4 초마다 호출됩니다. 그러나 때로는 4 초만으로는 서버가 데이터를 반환하기에 충분하지 않습니다. 그러나 서버가 1 초 안에 데이터를 반환하고 사용자가 더 오래 기다리는 것이 좋지 않으면 타이머 값을 높이는 것도 좋은 해결책이 아닙니다. 나는이 경우에 최선/최적 해결책이 무엇인지 모른다. 당신은 단지 데이터가 지속적으로 업데이트되도록하려면타이머 대 ASIHTTPRequest - 최적의 솔루션 찾기
-(IBAction)play:(id)sender{
timer=[NSTimer scheculedWith TimerInterval(4.0) target:(self)selector:@selector(httpRequest) userinfo:nil repeats:YES]
}
-(void)httpRequest{
_weak ASIHTTPRequest *request1 = [ASIHTTPRequest requestWithURL:url1];
[request1 setCompletionBlock:^{
NSString *responseString1 = [request1 responseString];
//dispatch_async(backgroundProcess1,^(void){
[self plotOverlay1:responseString1];
//});
}];
[request1 setFailedBlock:^{
NSError *error=[request1 error];
NSLog(@"Error: %@", error.localizedDescription);
}];
[request1 startAsynchronous];
}
대신 타이머를 사용하여, 당신은 단지 완료 블록에서 다시 HttpRequest를 호출 할 수 있습니다 :
이 같을 수 있는가? 그렇게하면 이전 요청이 완료되는 즉시 새로운 요청이 만들어집니다. 그것이 당신이 성취하고자하는 것입니까? – jonkroll
@ Jon, 제발 내 질문에 좀 걸릴 수있어 내가 방금 게시했습니다 http://stackoverflow.com/questions/12594112/remove-annotation-from-mapview-like-google-map-app – casillas