2
誰でもこのコード行を考えることができます [self.view insertSubview:dataInputController.view atIndex:0]; は、2つのviewDidLoadメッセージをdataInputViewControllerに生成し、その後に1つのviewWillDisapearと1つのdeallocを生成します。2つのviewDidLoadメッセージが1つだけ期待されるとき
viewDidDisappearまたはdeallocのないviewDidLoadが1つ必要です。
私はdataInputControllerの_parentViewControllerを見ましたが、viewDidLoadが呼び出されたときとないときはどちらもゼロです。私はコールスタックが私が期待したものではないことに気づいた。初めてviewDidLoadが呼び出されると、スタックは次のようになります。main、UIApplicationMain、UINibInstantiateWithOwner、switchViewController、UIViewController、UINibInstantiateWithOwner、dataInputViewController。 2回目のviewDidLoadはスタックと呼ばれ、main、UIApplicationMain、UINibInstantiateWithOwner、switchViewController、UIViewController、dataInputViewControllerのようになります。スタックに2番目のUINibはありません! – user990380
挿入を行う直前に '[dataInputController.view superview]をチェックしてください。 –