UITableView reloadDataでnumberOfSectionsInTableViewが呼ばれない

ユーザーが別画面で情報編集後、一覧画面のテーブルビューを更新したいことがあります。

テーブルビュー側の viewWillAppear で reloadData を実行すればテーブルが更新されますが、
[super viewWillAppear:animated]との順番によって動作が変わる点に注意しなくてはなりません。

<NGの例>

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self.tableView reloadData];
}

一見よさそうですが、以下の2点で問題があります。
・ビューの最初の読み込み時に、numberOfSectionsInTableView が重複して呼ばれてしまう
・他のビューから戻ってきた時に、numberOfSectionsInTableView や numberOfRowsInSection が呼ばれず、cellForRowAtIndexPath だけ呼ばれてしまう可能性がある。セクション数などが変わった場合、Appが落ちる原因となる。

<OKの例>

- (void)viewWillAppear:(BOOL)animated {
    [self.tableView reloadData]; // OK
    [super viewWillAppear:animated];
}

上記2点の問題が解消されます。