RestKitでブロックを使用する(asihttprequestブロックなど)
質問
私はasihttprequestでブロックサポートを広範囲に使用していますが、デリゲートに別々の関数を呼び戻すことよりもはるかに、非常にエレガントな非同期リクエストの方法であることがわかりました。
迅速な参照のためのサンプルコードは次のとおりです。
__block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setCompletionBlock:^{
NSString *responseString = [request responseString];
}];
[request startAsynchronous];
Restkitの使用を開始したいのですが、ブロックを使用してRestkitも使用できる必要があります。
ここでラッパーを見ました RESTKITブロックラッパー, 、しかし、そのラッパーが生産においてうまく機能するかどうか、そして誰かが以前にそれを広範囲に使用したことがあるかどうかを確認したい
解決
私はまだRESTKITブロックラッパーを使用していませんが、まもなくなります。私は実際にアプリからasihttprequestを削除し、RestKitに置き換えています。それが悪いからではなく、asihttp*は非常に安定していますが、進化していません。 RestKitのような他の多くのライブラリは、NSURLCONNECTIONをラップし、リンゴの継続的な機能強化の利点を享受しますが、ASIHTTP*はCFNetworkを使用します。 Appleは、既存のCore Foundationクラス(CFNetworkなど)の改善に多くの努力を投資していません。また、asihttp*はCFに依存するため、 王室の痛み 利用可能なときにARCに移行する。私はできるだけ早くアークの利点はありません。
他のヒント
RKRequestとRkobjectloaderのすべての基本的なデリゲートタスクのブロックサポートは0.9.4に登場します
昨日、ブレイクはリリースされました Verson 0.9.3 オブジェクトマッパーのブロックの使用法を備えています(他の方法はすでにブロックの準備ができていました)。新機能を見てください。
ブロック付きのRestKitを使用するためのクイックコードサンプルのために、私はこのスニペットをから導き出しました http://kalapun.com/blog/2012/05/17/how-i-restkit/
[[RKClient sharedClient] get:@"/fooBar" usingBlock:^(RKRequest *request) {
request.onDidLoadResponse = ^(RKResponse *response) {
NSLog(@"Retrieved XML: %@", [response bodyAsString]);
};
}];