POSTリクエストの 'API'クラスにアクセスするこのような 'ViewController'という単純なUIViewクラスがあるとします。iOS - 別のクラスのcompletionHandlerブロックからビュー関連のクラスにアクセス
@implementation ViewController
- (void)viewDidLoad {
api = [[API alloc] init];
[api postData];
}
@end
APIクラスは、APIクラスのcompletionHandlerから、私は簡単な警告を表示し(または任意のUIView関連するオブジェクトを変更)するにはどうすればよい
@implementation API
- (void)postData {
[[session dataTaskWithRequest:rq completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
// show Alert in ViewController if response code is 200
}] resume];
}
@end
NSURLSessionとポストデータを開くのだろうか? 私はブロックの概念ではかなり新しいです。これを解決する最善の方法は何ですか?
よろしくお願いいたします。
Hmmmこのように、completionHandlerはpostDataWithCompletionメソッドに公開されているため、ViewControllerから取得できます。私はそれを試してみましょう。 Btw、if(completionBlock())はどういう意味ですか? – kaitosenpai
うまくいくはずです。どうしたらいいか教えてください。完了ブロックが存在するかどうかを確認するには、ブロック構文を使用するのが一般的です。多くの場合、メソッドの実装で完了ブロックを無制限に設定することになり、適切に処理しなければクラッシュする可能性があります。保護の問題だけ。 – dokun1
コードが機能しています。デリゲートとプロトコルに精通していますか?あなたはあなたの答えで、この問題を解決する多くの方法があると言いました。おそらく私にデリゲートとプロトコルの別の解決策を教えてもらえますか? – kaitosenpai