sendAsynchronousRequest:queue:completionHandler の使用方法について。
2023-11-17 14:29:45
質問
二者択一の質問
第一部 私はデータベースへの非同期リクエストを作成しようとしています。私は現在、同期的にそれを行っていますが、私は何が起こっているのか理解を深めるために両方の方法を学びたいと思っています。
現在、私はこのように同期呼び出しをセットアップしています。
- (IBAction)setRequestString:(NSString *)string
{
//Set database address
NSMutableString *databaseURL = [[NSMutableString alloc] initWithString:@"http://127.0.0.1:8778/instacodeData/"]; // imac development
//PHP file name is being set from the parent view
[databaseURL appendString:string];
//call ASIHTTP delegates (Used to connect to database)
NSURL *url = [NSURL URLWithString:databaseURL];
//SynchronousRequest to grab the data
NSURLRequest *request = [NSURLRequest requestWithURL:url];
NSError *error;
NSURLResponse *response;
NSData *result = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
if (!result) {
//Display error message here
NSLog(@"Error");
} else {
//TODO: set up stuff that needs to work on the data here.
NSString* newStr = [[NSString alloc] initWithData:result encoding:NSUTF8StringEncoding];
NSLog(@"%@", newStr);
}
}
私は、私が行う必要があるのは、呼び出しを置き換えることだと思います。
NSData *result = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
ASynchronousバージョンで
sendAsynchronousRequest:queue:completionHandler:
というような感じで作っているのですが、queueやcompletionHandlerに何を渡せばいいのかよくわかりません...。何か例や解決策があれば、非常にありがたいです。
パート2です。 私はマルチタスクについて読んできましたが、割り込みがあった場合に接続要求が完了することを確認することによって、それをサポートしたいと思います。私はこの 例
その中で、割り込みが発生した場合に時間を稼ぐ方法を説明していますが、それが何をやっているかは理解できます。
どのように解決するのですか?
第1段階
NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[NSURLConnection sendAsynchronousRequest:urlRequest queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
{
if ([data length] > 0 && error == nil)
[delegate receivedData:data];
else if ([data length] == 0 && error == nil)
[delegate emptyReply];
else if (error != nil && error.code == ERROR_CODE_TIMEOUT)
[delegate timedOut];
else if (error != nil)
[delegate downloadError:error];
}];
関連
-
[解決済み] hw.machine」識別子の信頼性を確認する方法は?
-
[解決済み] Mobile Safariで電話番号のリンクを無効にする方法を教えてください。
-
[解決済み] UITextFieldのキーボードの種類をプログラムで変更する
-
[解決済み] iosアプリの最大メモリ使用量
-
[解決済み] モバイルSafari(iPhone)でテキストエリアのインナーシャドウを除去する
-
[解決済み] プロダクションコードでNSLog()を使ってはいけないというのは本当ですか?
-
[解決済み] エラー : サービスは無効です
-
[解決済み] viewWillAppear:と-viewDidAppear:の違いは何ですか?
-
[解決済み] UIWebViewの背景がクリアカラーに設定されているが、透明になっていない
-
[解決済み] iPhoneシミュレーター - 低速接続をシミュレートする?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] UILongPressGestureRecognizerが押し下げ時に2回呼び出される
-
[解決済み] UIPageControlのページネーションドットの色を変更するにはどうしたらよいですか?
-
[解決済み] iOSでHTMLをNSAttributedStringに変換する
-
[解決済み] モバイルSafari(iPhone)でテキストエリアのインナーシャドウを除去する
-
[解決済み] iPhoneのSafariで<body>に適用したoverflow:hiddenは機能するのか?
-
[解決済み] cocoaアプリケーションのinfo plistにある「bundle display name」と「bundle name」の違いは何ですか?
-
[解決済み] Mac OS Xのスタティック・ライブラリ(.a)のターゲット・アーキテクチャはどのように決定するのですか?
-
[解決済み] Objective-Cのプロトコルでプロパティを含むものはどう扱えばいいのか?
-
[解決済み] iPhoneシミュレーターでカメラをテストするには?
-
[解決済み] iPhoneのデータ使用量のトラッキング/モニタリング