0
백그라운드 스레드에서 getObjectsAtPath를 수행하고 있습니다. 그러나 성공/실패 블록은 UI 스레드에서 호출됩니다.Reskit - UI 스레드 대신 동일한 스레드에서 콜백
RestKit이 UI 스레드에서 같은 스레드에서 성공 및 실패 블록을 강제로 호출하도록 할 수있는 방법이 있습니까?
백그라운드 스레드에서 getObjectsAtPath를 수행하고 있습니다. 그러나 성공/실패 블록은 UI 스레드에서 호출됩니다.Reskit - UI 스레드 대신 동일한 스레드에서 콜백
RestKit이 UI 스레드에서 같은 스레드에서 성공 및 실패 블록을 강제로 호출하도록 할 수있는 방법이 있습니까?
Restkit은이 기능을 제공하지 않지만이를 보관할 수 있습니다.
RKObjectRequestOperation
클래스에는 콜백 대기열을 설정할 수있는 두 가지 속성 successCallbackQueue
& failureCallbackQueue
이 있습니다. RKObjectManager
클래스를 덮어 쓰고 RKObjectRequestOperation
을 반환하면 콜백 대기열을 설정할 수 있습니다. 울부 짖는 소리 같이
- (RKObjectRequestOperation *)getObjectsAtPath:(NSString *)path
parameters:(NSDictionary *)parameters
success:(void (^)(RKObjectRequestOperation *operation, RKMappingResult *mappingResult))success
failure:(void (^)(RKObjectRequestOperation *operation, NSError *error))failure
{
NSParameterAssert(path);
RKObjectRequestOperation *operation = [self appropriateObjectRequestOperationWithObject:nil method:RKRequestMethodGET path:path parameters:parameters];
[operation setCompletionBlockWithSuccess:success failure:failure];
[self enqueueObjectRequestOperation:operation];
return operation;
}
그럼 당신은 콜백 대기열을 설정할 수 있습니다
RKObjectManager *objectManager = [RKObjectManager sharedManager];
RKObjectRequestOperation *operation = [objectManager getObjectsAtPath:path
parameters:parameters
success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
}
failure:^(RKObjectRequestOperation *operation, NSError *error) {
}];
operation.successCallbackQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0);
operation.failureCallbackQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0);