iosでのhttpリクエスト（GET）のタイミングについて


プログラム初心者です。  
viewDidLoadにてgetFlagメソッドを呼び、非同期でサーバーから情報を取得し、その値をviewWillAppearで使用したいのですが、下記のようなコードですと「isFlag」に値がセットされる  
タイミングが遅く、viewWillAppearが実行されるタイミングに間に合いません。  
このような場合どのようにすれば良いでしょうか。

[code]

    @interface hogeViewController(){
        BOOL isFlag; 
    }
    
    - (void)viewDidLoad {
        [super viewDidLoad];
    
        [self getFlag];
    }
    
    -(void) viewWillAppear:(BOOL)animated{
        [super viewWillAppear:animated];
    
        if(isFlag){
            ...
        }else{
            ...
        }
    }
    
    -(void) getFlag{
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    
        NSString *serverInfo_ = nil;
        serverInfo_ = [NSString stringWithFormat:@"https://%@", WebServerInfo];
        NSString *mediaApi = [serverInfo_ stringByAppendingFormat:@"/api/hoge/"];
    
        NSURL *url_ = [NSURL URLWithString:mediaApi];
        [request setHTTPMethod:@"GET"];
    
        [NSURLConnection sendAsynchronousRequest:request
                                        queue:[NSOperationQueue mainQueue]
                            completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
                                if(data){
                                    isFlag = true;
                                }
                            }];
    }
    
[/code]




こんにちは！

非同期、つまり、いつ返ってくるかわからないデータを `viewWillAppear`
で利用する、というアプローチが間違っていると思います。御存知の通り、`viewWillAppear`
はviewが表示される直前に呼ばれるメソッドですので、getFlag の処理が終わるのは待ってくれません。

どうしても`viewWillAppear` で利用したいのであれば、非同期ではなく、同期でやるしかないと思いますよ！

