Carga UITableViewCell personalizada desde Storyboard

Actualmente estoy usando layout automático con storyboard para cambiar dinámicamente el tamaño de UITableViewCell personalizado. Todo funciona como debería, excepto que hay pérdida de memory al desplazarse.

Sé que el problema es llamar

 [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

desde adentro

 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 

Mi pregunta es esta, ¿cuál sería la mejor forma de crear una celda de reference? ¿Cómo cargar una celda desde storyboard sin dequeueReusableCellWithIdentifier ?

¿Y está bien que tal vez llame a dequeueReusableCellWithIdentifier desde viewDidLoad y cree una celda de reference como una propiedad?

Necesito una celda de reference para propósitos de dimensionamiento.

Gracias por cualquier ayuda.

En cuanto a cómo crear una celda de reference (ver pregunta original), hay un par de opciones como puedo ver:

  1. Crea una celda personalizada con XIB, excelente artículo aquí -> ¡ un enlace !

    • Esto me lo señaló @smileyborg, ¡gracias!
  2. Cree su celda personalizada en código, junto con restricciones.

  3. Cree su celda personalizada en storyboard como celda prototipo

    • después de eso hay 2 opciones:
      • arrastre y suelte la celda personalizada desde la vista de la tabla hasta la escena del guión gráfico, como un object de plumón de nivel superior (que no forma parte de la jerarquía de la vista), y simplemente cree una salida.
      • copy la celda personalizada y pégala en la escena del guión gráfico. Al usarlo de esta manera, no es necesario registrar la celda original con la tabla para eliminar la queue.
      • Un problema menor con ambos enfoques es que una vez que arrastra y suelta la celda personalizada a la escena del guión gráfico, no podrá verla visualmente y organizar la interfaz de usuario.
    • gran artículo aquí -> un enlace !

¡Gracias a todos por ayuda!

¿Y está bien que tal vez llame a dequeueReusableCellWithIdentifier desde viewDidLoad y cree una celda de reference como una propiedad?

Sí, usted puede hacer esto. O perezoso inicializa la propiedad:

 - (UITableViewCell *)referenceCell { if (!_referenceCell) { _referenceCell = [self.tableView dequeueReusableCellWithIdentifier:@"Cell"]; } return _referenceCell; } 

Puede simplemente eliminar la celda una vez y almacenar la altura:

 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { static NSNumber *height; if (!height) { UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"YourCustomCell"]; height = @(cell.bounds.size.height); } return [height floatValue]; }