La pregunta es simple: ¿cómo se cargan los UITableViewCellarchivos Xib personalizados ? Hacerlo le permite usar Interface Builder para diseñar sus celdas. La respuesta aparentemente no es simple debido a problemas de administración de memoria. Este hilo menciona el problema y sugiere una solución, pero es un lanzamiento previo a NDA y carece de código. Aquí hay un largo hilo que discute el problema sin dar una respuesta definitiva.
Aquí hay un código que he usado:
static NSString *CellIdentifier = @MyCellIdentifier;
MyCell *cell = (MyCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CellIdentifier owner:self options:nil];
cell = (MyCell *)[nib objectAtIndex:0];
}
Para usar este código, cree MyCell.m / .h, una nueva subclase de UITableViewCelly agregue IBOutletspara los componentes que desee. Luego crea un nuevo archivo Empty XIB. Abra el archivo Xib en IB, agregue un UITableViewCellobjeto, establezca su identificador en MyCellIdentifier y establezca su clase en MyCell y agregue sus componentes. Finalmente, conecta el IBOutletsa los componentes. Tenga en cuenta que no configuramos el propietario del archivo en IB.
Otros métodos recomiendan configurar el propietario del archivo y advertir de fugas de memoria si el Xib no se carga a través de una clase de fábrica adicional. Probé lo anterior en Instrumentos / Fugas y no vi pérdidas de memoria.
Entonces, ¿cuál es la forma canónica de cargar células de Xibs? ¿Establecemos el propietario del archivo? ¿Necesitamos una fábrica? Si es así, ¿cómo es el código para la fábrica? Si hay múltiples soluciones, aclaremos los pros y los contras de cada una de ellas ...














