2011-07-18 5 views
0

내 앱에서 몇 초가 지나서 네트워크 연결이 너무 느리면 오류 메시지를 표시하려고합니다. 어떻게 구현해야합니까?일정 시간이 지난 후 작업을 실행하는 방법은 무엇입니까?

-(void)setProjectID:(NSString *)newProject { 
    [self willChangeValueForKey:@"projectID"]; 
    [projectID release]; 
    projectID = [newProject copy]; 
    [self didChangeValueForKey:@"projectID"]; 

    // Since we have an ID, now we need to load it 
    NSInvocation *returnInvocation = [NSInvocation invocationWithMethodSignature: 
             [Detail instanceMethodSignatureForSelector:@selector(configureView:)]]; 
    [returnInvocation setTarget:self]; 
    [returnInvocation setSelector:@selector(configureView:)]; 
    [returnInvocation retainArguments]; 

    fetch = [[WBWDocumentFetcher alloc] init]; 
    [fetch retrieveDocument:[NSURL wb_URLForTabType:PROJECT_DETAILS inProject:projectID] returnBy:returnInvocation]; 
} 
-(void)configureView:(NSDictionary *)serverResult 
{ 
} 

감사합니다, 당신은 performSelector:afterDelay: 또는 가능 performSelector:withObject:afterDelay:를 사용하려면

답변

1

: 여기에 코드입니다.

그런 다음 호출 된 메서드의 시작 부분에 페이지가로드되었는지 확인하십시오. 그렇지 않은 경우 UIAlertView을 표시하고로드를 취소하십시오.

+0

개체에서이 코드를 사용해야합니다. 내 코드에는 아무 것도 보이지 않습니다. – Ashutosh

+0

또한 페이지가로드되었는지 여부를 어떻게 확인해야합니까? – Ashutosh

+0

코드를 보지 않고 말하기는 다소 어렵습니다. 예를 들어,'UIWebView'를 사용하고 있다면, 아마도'-webViewDidStartLoad :'에 넣길 원할 것입니다. – PengOne

0

서버 요청시 NSURLRequest을 사용하는 경우 다음 코드를 사용하여 시간 초과를 판단하는 것보다.

//In this you can set timeoutinterval for request 
NSURLRequest* request = [NSURLRequest requestWithURL:yourURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0]; 

//If request is failing for time out reason you can check that and alert user accordingly. 
-(void)connectionFailed:(NSError *)error 
{ 
UIAlertView *objAlert = [[UIAlertView alloc] init]; 
[objAlert setTitle:@"Internet Connection"]; 
[objAlert addButtonWithTitle:@"Ok"]; 
if([error code] == -1001 || [[error localizedDescription] isEqualToString:@"timed out"]){ 
     [objAlert setMessage:@"Request Timed Out."]; 
     [objAlert show]; 
    } 
} 
관련 문제