僕のYak Shavingは終わらない

車輪の再発明をやめたらそこには壮大なYakの群れが

NetworkActivityIndicatorを通信中かどうかの判定に使う

APIを叩くときはネットワークインジケーター(ステータスバーでクルクル回るやつ)を使っていると思いますが、これをそのまま使うとAPIの連打防止になります。

変にFlag用の変数を増やすよりシンプルになりますね。

// Indicator ON
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
// Indicator OFF
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;

以下ソース

    // 現在通信中だったらAPIを叩かない
    NSLog(@"Requesting API ? %@", [UIApplication         sharedApplication].networkActivityIndicatorVisible ? @"YES" : @"NO");
    if (![UIApplication sharedApplication].networkActivityIndicatorVisible ) {
        [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
        [operation start];
    }
    // 通信が終わったら
    // [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
    // としてインジケーター表示を終了する前提

もしかしたら結構当たり前に使われているTIPSかもしれませんが。

ただ本当はもっと厳密にやらないといけない場合があるかもしれません。

例えば同じタイミングで通信終了した他のアプリがあったらインジケーターがNOになってしまいます。
その辺は以下が参考になりそうです。