inicializar UITableViewController con [super initWithStyle: UITableViewStyleGrouped]

Como entiendo esto correctamente desde la Api de Apple, cuando inicializo un UITableViewController con el método initWithStyle, debería devolverme una referencia a un UITableView en self.tableView. Lo que tendría sentido ya que no puede cambiar el estilo de una tableView una vez inicializado.

Pero en mi caso esto no sucede.


- (id)initWithSomeData:(SomeData *)someData {
    self = [super initWithStyle:UITableViewStyleGrouped];
    if (self) {
    }
    NSLog(@"self? %@ tableView? %@", self, self.tableView);
    return self;
}

Esta pantalla es un ID de objeto para self, pero self.tableView es nulo. ¿Estoy haciendo algo mal? ¡No estoy usando el generador de interfaces!

Responde: Jan tenía razón, descubrí que el proceso de inicialización de un UITableViewController difiere de un UIViewController normal.

Mi comprensión fue que en la creación se llamó a uno de los métodos init y se completaría antes que cualquier otro método (loadView, viewDidLoad) que se nos llame. Esto es correcto para un UIViewController, pero no para un UITableViewController.

El inicializador UITableViewController initWithStyle en realidad llama a loadView y viewDidLoad como parte de su proceso de inicialización. La propiedad de self.tableView se está configurando en loadView, pero no si anula loadView, lo que hice y, por lo tanto, self.tableView no se estaba configurando.

Respuestas a la pregunta(1)

Su respuesta a la pregunta