我正在重写回调方法以处理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