HTTP 요청의 응답을 처리하기 위해 콜백 메서드를 재정의했습니다.비동기 호출을 동기화하는 방법은 무엇입니까
-(NSObject<HTTPResponse> *)httpResponseForMethod:(NSString *)method URI:(NSString *)path{
NSObject <HTTPResponse> *response;
// Here I should load the data
}
그러나, 내 요청에 난 단지 비동기 적으로 작동 일부 데이터를로드 할 수있다 : 나는 synchonous 방법입니다 때문에
- (void)assetForURL:(NSURL *)assetURL resultBlock:(ALAssetsLibraryAssetForURLResultBlock)resultBlock failureBlock:(ALAssetsLibraryAccessFailureBlock)failureBlock;
, 나는이 방법을하기 전에 "떠날 수 없다" 자료. 또한 내가 요청할 때까지 어떤 자산이 필요한지 알지 못하기 때문에 필요한 데이터를 사전로드 할 수 없습니다.
이것은 나에게 매우 까다로운 디자인 문제인 것처럼 보이며 몇 가지 주요 해킹없이이를 해결하는 방법을 볼 수 없습니다.
혹시 HTTP 요청이 동기가되는 객체를 변경할 수 있습니까? HTTP 요청은 결코 동기 적이 지 않아야합니다. 이렇게 할 수없고 실제로이 문제를 해결해야하는 경우 요청이 완료 될 때까지 실행 루프를 만들어 실행할 수 있습니다. 그러나 나는 이것이 당신이 (올바르게) 피하려고하는 "주요 해킹"범주에 속한다고 생각합니다. – stevex
@stevex 비동기 적으로 HTTP 호출을 만들 수 있는지 여부를 조사해야합니다. 해키 인 경우에도 "대기 루프"를 어떻게 수행해야하는지 보여 줄 수 있습니까? 이전에 같은 문제가 있었지만 대리자 콜백에 약간의 시간이 걸리더라도 (예 : 메인 스레드에 없을 수도 있음) 예를 들어 편리하게 사용할 수있는 방법을 찾지 못했습니다. 그 주변 블록들. – Besi