Se si esegue il override di loadView, è necessario fornire una vista di root per la gerarchia delle viste del controllore. Se non lo si fornisce, loadView viene richiamato ogni volta che si fa riferimento alla vista, probabilmente portando a un ciclo infinito. Da documenti:
Se si specificano le viste manualmente, è necessario implementare il metodo loadView e utilizzarlo per assegnare un oggetto di visualizzazione radice alla proprietà di visualizzazione.
implementazioni che potrebbero causare un ciclo infinito:
- (void)loadView {
NSLog(@"loadview");
}
... auto.la vista è nil dopo loadView
- (void)loadView {
self.view; // Or anything that references self.view
}
... il riferimento a self.view causa l'invocazione di loadView, quindi un ciclo infinito.
corretta:
- (void)loadView {
self.view = [[UIView alloc] init];
if (self.view == nil) {
[super loadView]; // Try to load from NIB and fail properly, also avoiding inf. loop.
}
}
Questa è la risposta corretta, non quello contrassegnato come accettato – Pascal