RestKit
을 통해 객체 모음을로드하려고 시도하는데이 작업으로 메인 스레드가 차단되고 있습니다. 특히, UIViewController
메시지가 -(void)viewDidAppear:(BOOL)animated;
메시지에 나타날 때이 기능이 호출됩니다. 요청이로드되는 동안 사용자는 UI와 상호 작용할 수 없으므로 작업이 완료 될 때까지 기다려야합니다.iOS : RestKit 대기열 관리 객체 작업 차단 UI 스레드
RestKit에서 비동기 적으로 요청을 실행하도록 지시 할 수 있습니까 (이미 생각한 것 같습니다). 메인 스레드를 차단하지 않습니까?
-(void)rtrvArtistsByStudio:(ISStudio *)studio
{
NSLog(@"Retrieving Artists for studio %ld", [studio studioID]);
NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
NSDictionary *params = [NSDictionary dictionaryWithObject:[NSString stringWithFormat:@"%ld", [studio studioID]] forKey:@"studioID"];
NSURLRequest *request = [restkit requestWithObject:nil method:RKRequestMethodGET path:@"/restAPI/rtrvArtistsByStudio" parameters:params];
RKManagedObjectRequestOperation *operation = [restkit managedObjectRequestOperationWithRequest:request managedObjectContext:restkit.managedObjectStore.persistentStoreManagedObjectContext success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
NSArray *artists = [mappingResult array];
[studio setArtists:artists];
[notificationCenter postNotificationName:nStudioLoadedArtists object:studio];
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
NSLog(@"Failed to load artists for studio %ld due to %@", [studio studioID], error);
[notificationCenter postNotificationName:nStudioFailedLoadingArtists object:studio];
}];
[restkit enqueueObjectRequestOperation:operation];
}
편집 : 나는 또한 restkit
이 RKObjectManager
의 인스턴스에 대한 포인터 있음을 알아 두셔야합니다.
RestKit 버전은 요청이 확실히 비동기 적으로 발송되는 0.20
어떤 RestKit 버전을 실행하고 있습니까? – Alex
0.20.0, 편집 및 원래 질문에 추가. – kz3