2011-12-13 6 views
0

에 연결 나를 연결하는 동안 동결없이 작업 GUI를 유지하기 위해 새 스레드에서 연결을하려면내 이전 게시물의 사람 중 하나에서 배경

NSURLConnection *conn = [NSURLConnection connectionWithRequest:theRequest delegate:self]; 

를 사용하는 것이 좋습니다. 하지만 이제는 이것이 작동하지 않는다는 것을 알 수 있습니다.

이것은 전체적인 방법입니다.

- (void)postRequestWithURLState:(NSString *)url 
{ 
    NSString *bodyRequest = nil; 
    NSURL *requestURL = [NSURL URLWithString:url]; 
    NSMutableURLRequest *theRequest = [[NSMutableURLRequest alloc] init]; 

    //NSLog(@"-------------- bodyRequest: %@", bodyRequest); 



    [theRequest setURL:requestURL]; 
    [theRequest setTimeoutInterval:2.0]; 
    [theRequest setHTTPMethod:@"POST"]; 
    [theRequest setHTTPBody:[bodyRequest dataUsingEncoding:NSASCIIStringEncoding]]; 
    [self.oauthAuthentication authorizeRequest:theRequest]; 
    NSURLConnection *conn = [NSURLConnection connectionWithRequest:theRequest delegate:self]; 

    self.web = conn; 


} 

이는 greader라는 클래스의 일부입니다. 그래서이 모드에서이 방법을 사용합니다.

reader = [[greader alloc] init]; 
    [reader setDelegate:self]; 

나는 [reader postRequestWithURLState : url]이라고합니다. 하지만이 방법으로 몇 초 동안 내 앱이 계속 정지됩니다. 몇 초 동안 앱을 정지하지 않고이 작업을 어떻게 수행 할 수 있습니까?

+0

NSURLConnection 당신이 위임 방법 중 하나에 소요되는 뭔가 시간을하고 있습니까 실행 NSThread를 사용해보십시오? –

답변

0

이상합니다. 왜이 방법으로 UI가 멈출 수 있는지 알 수 없습니다.

하나의 간단한 솔루션은 별도의 스레드에서 메서드를 호출하는 것입니다. 독자에게 재산을 확인 (또는 아래의 방법에 전달) :

-(void)postReaderRequest:(NSURL)url { 
    [self.reader postRequestWithURLState:url]; 
} 

다음

[self performSelectorInBackground:@selector(postReaderRequest) 
    withObject:[NSArray arrayWithObject:url]]; 

을 결과가 동일하면, 그것은 뭔가 다른 이었음에 틀림 없다.

+0

나는 그것을 시도 할 것이다 ... 어쨌든 다른 무엇인가? 내가 찾는 것을하기위한 가장 좋은 방법은 무엇입니까? –

+0

NSURLConnection은 올바른 방법입니다. UI가 멈추는 현상은 다른 것 (코드가 게시되지 않음)에서 발생했을 가능성이 큽니다. – Mundi

관련 문제