UITableView
rowHeight vs estimatedRowHeight
rowHeight
TableView 内の各セルに共通して適用する高さを定義する。tableView(_:heightForRowAt:) が設定されていたら、そちらが優先して利用される。しかし、delegate メソッドを実装した場合、TableView は Row 毎に delegate メソッドを呼び出す必要があるため、パフォーマンス的にはプロパティ経由で設定した方が良い。 セルの高さは xib 上で設定することもできる。このようなセルは self-sizing なセルと呼ばれる。このようなセルを xib 上での設定通りの高さにしたい場合には、このプロパティの値は automaticDimension に設定すべき。
estimatedRowHeight
各セルが異なる高さを持つ場合、TableView 全体のロード時に全セルに対してそれらすべてを計算するのはパフォーマンス的によろしくない。estimatedRowHeight は、セルの高さの計算を ロード時に ではなく スクロール時に (表示する直前に) 遅延させる役割を持つ。
estimatedRowHeight を利用する場合、TableView 自身が contentOffset や contentSize を管理することになる。そのため、手動でこれらの値を編集してはいけない。