Ajustar automáticamente la altura de un NSTableView

Ya hice esta pregunta una vez, pero no estoy muy satisfecho con la solución.

Ajustar automáticamente el tamaño de NSTableView

Quiero mostrar unNSTableView en unNSPopover, o en unNSWindow.
Ahora, el tamaño de la ventana debe ajustarse con la vista de tabla.

Al igual que Xcode lo hace:

Esto es bastante simple con Auto Layout, solo puede fijar la vista interior a la vista superior.

Mi problema es que no puedo calcular la altura óptima de la vista de tabla. El siguiente código enumera todas las filas disponibles, pero no devuelve el valor correcto, porque la vista de tabla tiene otros elementos como separadores y la cabecera de la tabla.

- (CGFloat)heightOfAllRows:(NSTableView *)tableView {
    CGFloat __block height;
    [tableView enumerateAvailableRowViewsUsingBlock:^(NSTableRowView *rowView, NSInteger row) {
        // tried it with this one
        height += rowView.frame.size.height;

        // and this one
        // height += [self tableView:nil heightOfRow:row];
    }];

    return height;
}
1 pregunta

¿Cómo puedo arreglar esto? ¿Cómo puedo calcular correctamente la altura requerida de la vista de tabla?

2. Pregunta

¿Dónde debo ejecutar este código?
No quiero implementar esto en un controlador, porque definitivamente es algo que la vista de tabla debería manejar por sí misma.
Y ni siquiera encontré ningún método de delegación útil.

Así que pensé que lo mejor sería si pudieras subclaseNSTableView.
Así que mi pregunta 2, ¿dónde implementarla?

Motivación

Definitivamente vale la pena una recompensa

Respuestas a la pregunta(5)

Su respuesta a la pregunta