我正在重寫回調方法以處理HTTP請求的響應。如何使異步調用同步
-(NSObject<HTTPResponse> *)httpResponseForMethod:(NSString *)method URI:(NSString *)path{
NSObject <HTTPResponse> *response;
// Here I should load the data
}
然而,在我的要求我必須加載一些數據只能異步:
- (void)assetForURL:(NSURL *)assetURL resultBlock:(ALAssetsLibraryAssetForURLResultBlock)resultBlock failureBlock:(ALAssetsLibraryAccessFailureBlock)failureBlock;
由於我在synchonous方法,我不能「離開」的方法之前,我有數據。此外,我無法預先加載所需的數據,因爲我不知道需要哪些資產,直到我處於請求中。
這似乎是一個相當棘手的設計問題,我看不到一個解決方案如何解決這個問題,沒有一些主要的黑客。
您可以更改強制您的HTTP請求同步的對象嗎? HTTP請求不應該是同步的。 如果你不能這樣做,而且你真的必須解決這個問題,你可以創建並運行一個運行循環,直到請求完成。但我認爲這屬於你(正確)想要避免的「主要黑客」類別。 – stevex 2011-12-14 15:28:17