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