два сообщения viewDidLoad, когда ожидается только одно

#ios #viewdidload

#iOS #viewdidload загрузить

Вопрос:

Кто-нибудь может подумать, почему эта строка кода [self.view insertSubview:dataInputController.view atIndex:0]; будет генерировать два сообщения viewDidLoad для dataInputViewController, за которыми следует одно viewWillDisappear и одно dealloc?

Я ожидал, что будет один viewDidLoad без viewDidDisappear или dealloc.

Ответ №1:

Возможно ли, что dataInputController.view у него уже был супервизор? Это объяснило бы все вызовы.

Комментарии:

1. Я посмотрел на _parentViewController для dataInputController, и он равен нулю оба раза, когда вызывался viewDidLoad. Я заметил, что стек вызовов — это не то, что я ожидал. При первом вызове viewDidLoad стек выглядит следующим образом: main, UIApplicationMain, UINibInstantiateWithOwner, switchViewController, UIViewController, UINibInstantiateWithOwner, dataInputViewController. Во второй раз, когда вызывается viewDidLoad, стек выглядит следующим образом: main, UIApplicationMain, UINibInstantiateWithOwner, switchViewController, UIViewController, dataInputViewController. В стеке нет 2-го UINib!

2. Проверьте [dataInputController.view superview] непосредственно перед выполнением вставки.