2012-09-26 5 views
4

RestKit의 오류 콜백에서 컨트롤러를 전환하는 데 문제가 있습니다. 이 모든 RestKit 처리를 취소하지 않기 때문에,RestKit 처리를 모두 중지 할 수있는 방법이 있습니까?

[[[[RKObjectManager sharedManager] client] requestQueue] cancelAllRequests]; 

scAppDelegate *appDelegate = (scAppDelegate *)[UIApplication sharedApplication].delegate; 
WelcomeController *controller = [[WelcomeController alloc] init]; 
[controller createWelcome]; 
appDelegate.window.rootViewController = controller; 
[appDelegate.window addSubview:[controller view]]; 
[appDelegate.window makeKeyAndVisible]; 

내 문제가 첫 번째 줄에 :

*** -[RKObjectLoader onDidFailWithError]: message sent to deallocated instance 0x1ddd9680 

이 코드와 방법 - (void)objectLoader:(RKObjectLoader *)objectLoader didFailWithError:(NSError *)error으로 전환하고 있습니다 : 그것은 오류가 발생합니다. 로그에서 일부 ObjectMapping 조작을보고 EXC_BAD_ACCESS (SIGSEGV) 오류가 발생했습니다. 해결 방법을 찾았습니다. 지연 후 스위치 컨트롤러 (performSelector:withObject:afterDelay 사용). 하지만 더 나은 솔루션을 찾고 있습니다.

ObjectMapping 작업은 다음과 같습니다 나는 RestKit의 최신 버전을 사용하고

2012-09-26 14:50:09.408 dr[5004:907] W restkit.object_mapping:RKObjectMapper.m:87 Adding mapping error: Could not find an object mapping for keyPath: '' 
2012-09-26 14:50:09.410 dr[5004:907] E restkit.network:RKObjectLoader.m:231 Encountered errors during mapping: Could not find an object mapping for keyPath: '' 
2012-09-26 14:50:09.411 dr[5004:907] E restkit.network:RKObjectLoader.m:360 Encountered an error while attempting to map server side errors from payload: Could not find an object mapping for keyPath: '' 
2012-09-26 14:50:09.419 dr[5004:907] I restkit.support:RKCache.m:189 Invalidating cache at path: /var/mobile/Applications/1B9919DC-0674-494D-9C26-F1FC1925E856/Library/Caches/RKClientRequestCache-dr.cloudapp.net/SessionStore 
2012-09-26 14:50:09.422 dr[5004:907] I restkit.network.reachability:RKReachabilityObserver.m:123 Reachability observer initialized with IP address: 0.0.0.0. 

.

+0

나는 여전히 같은 문제가 있습니다. 이 충돌은 매우 예상치 못한 것이며 언제든지 올 수 있습니다. – Sandeep

+0

솔루션은 다른 컨트롤러로 전환하기 전에 대기열에있는 모든 보류중인 요청을 수동으로 취소합니다. 하지만 아직 구현하지 않으려 고 노력했습니다. 나는 코드를 게시 할 것이고,이 솔루션이 작동한다면 – kraag22

답변

0

클라이언트가 모든 작업을 취소하도록 요청하는 이유가 있습니까? 일반적으로 RKObjectManager에 작업을 요청합니다. RestKit 0.20.0에서

[[[[RKObjectManager sharedManager] requestQueue] cancelAllRequests]; 
+0

당신이 그렇게하고 보류중인 요청을 가지고 있다면, 당신의 앱은 충돌 할 것이다. 그걸로 내 경험이 ... – kraag22

+0

처리 및 API 요청입니다 함수에서 cancelAllRequests를 호출하기 때문에. 그래서 현재 요청에 대한 정보를 삭제합니다 -> 예외 occures – kraag22

+0

이상한. 내 응용 프로그램에서 서버와 동기화 프로세스를 취소하는 데이 방법을 사용하고 완벽하게 작동합니다. – flashfabrixx

1

: 이미 알려 주시기 바랍니다 해결책을 발견 한 경우

[[[RKObjectManager sharedManager] operationQueue] cancelAllOperations]; 
관련 문제