2012-04-18 3 views
0

PHP 스크립트에서 일부 데이터를 가져 오는 다음 코드가 있습니다. 진행률 표시기가 회전하지 않도록 인터페이스를 차단한다는 사실을 발견했습니다. UI를 원하는대로 자유롭게 보낼 수 있도록 배경으로 보낼 수있는 쉬운 방법이 있습니까? 나는 블록을 사용하는 것이이 일을 성취했을 것이라는 인상 아래에 있었지만 분명히 틀렸다. (한 번에 Obj-C 학습을 한 번에!)AFHTTPRequestOperation 블록 UI

고마워!

NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys: 
         self.user.username, @"username", 
         self.user.password, @"password", 
         nil]; 
AFHTTPClient *client = [[AFHTTPClient alloc] initWithBaseURL: 
         [NSURL URLWithString:@"http://domain.com"]]; 

    // Show animated progress indicator, etc  
[self enbleLoadingState:YES]; 

[client postPath:@"/en/api/login" parameters:params success:^(AFHTTPRequestOperation *operation, id response) { 
    [self enbleLoadingState:NO]; 
    // Do stuff 

} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
    [self enbleLoadingState:NO]; 
    // Show error 
}]; 
+0

이 코드는 작동해야하며 요청은 백그라운드에서로드됩니다. 문제는 다른 곳에 있어야합니다. – Felix

+0

더 나은 하위 클래스 AFHTTPClient 그리고 싱글 톤 클래스 – Felix

+0

@ phix23하지만 작동하지 않습니다 :(내 PHP 스크립트에서 나는 5 초를 기다리는 진행 (5) 및 진행 표시기가 그냥 거기에 머물러 수 없습니다. UI의 다른 버튼을 누르십시오. 최신 Xcode 및 iOS SDK를 사용하고 있습니다.이 문제는 시뮬레이터와 iPad 1 세대에서 발생합니다. ARC를 사용하고 있습니다 ... 아무 것도 생각할 수 없습니다. 다른 점은 이것에 대해 어떤 생각을 밝혀 줄 것입니다. 내가 말한 것처럼 클라이언트를 서브 클래 싱하려고합니다. (어딘가의 예를 보았습니다.) – Julian

답변

0

이 코드는 작동해야하며 요청은 백그라운드에서로드됩니다. 문제는 다른 곳에서 발생해야합니다. 메인 스레드에서 시간을 어디에서 보냈는지 모른다 (enbleLoadingState:)? 요청을 시작하는 메소드는 즉시 반환되어야합니다. NSLog를 메소드의 시작과 끝 그리고 success-block 내부에 삽입하여 테스트하십시오. 성공 블록의 NSLog가 마지막으로 인쇄됩니다.