2012-09-24 4 views
0

코드는 아래와 같이 표시됩니다. 버튼을 클릭하면 타이머가 활성화되고 타이머는 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]; 
    } 
+1

대신 타이머를 사용하여, 당신은 단지 완료 블록에서 다시 HttpRequest를 호출 할 수 있습니다 :

이 같을 수 있는가? 그렇게하면 이전 요청이 완료되는 즉시 새로운 요청이 만들어집니다. 그것이 당신이 성취하고자하는 것입니까? – jonkroll

+0

@ Jon, 제발 내 질문에 좀 걸릴 수있어 내가 방금 게시했습니다 http://stackoverflow.com/questions/12594112/remove-annotation-from-mapview-like-google-map-app – casillas

답변

1

, 첫 번째 요청 (타이머를 제거)의 완료 블록 내에서 다시 -httpRequest를 호출하는 것이 좋습니다. 그렇게하면 요청이 다시 수행되지만 첫 번째 요청이 완료되면 이후에만 이 발생하므로 지연을 도입 할 수 있으므로 "첫 번째 검사가 완료되면 2 초 후에 다시 확인하십시오."와 같은 메시지가 표시됩니다.

- (void)httpRequest { 
    __weak ASIHTTPRequest *req = [ASIHTTPRequest requestWithURL:url1]; 
    [req setCompletionBlock:^{ 
     NSString *resp = [req responseString]; 
     [self plotOverlay1:resp]; 

     [self httpRequest]; 
     // or... 
     [self performSelector:@selector(httpRequest) withObject:nil afterDelay:2.0]; 
    }]; 
    /* snip fail block */ 
    [req startAsynchronous]; 
} 
+0

감사 Tim , 위로 엄지! !! superrr – casillas

+0

안녕하세요, 팀, 제발 내 질문에 봐주세요 제발 http://stackoverflow.com/questions/12594112/remove-annotation-from-mapview-like-google-map-app – casillas

+0

http :// /stackoverflow.com/questions/12611080/google-app-thumbnail-map-image-mkannotation – casillas

관련 문제