ほぼ2日間にわたって複数のマシンで試した後、最終的に問題を修正しました! 私は邪魔されません!
アプリケーションの初期化時に呼び出される UINavigationController で setViewControllers を呼び出すまで、問題を突き止めました。私は常に 3 つのオブジェクトを渡されていました (ナビゲーション コントローラーには 3 つのペインがあります)。前に説明したように、3 番目のオブジェクトを削除したにもかかわらず、3 つのオブジェクトが常に渡されます。最初の 2 つのクラス タイプは正しいですが、3 番目のオブジェクトは UIViewController になります。不思議なことに、このビュー コントローラーには、以前に削除したオブジェクト ファイルと Xib ファイルに対応する nibName がありました。もちろん、この壊れた UIViewController でビューが呼び出されると、対応するペン先が明らかに削除されているため、クラッシュします。このオブジェクトまたは Xib のテキスト名は、grep を使用してもディレクトリ内に見つかりませんでした。
そのため、アプリが適切にクリーニングされていない可能性があると考えました。私はこれを2回3回チェックしました。ワークスペースの設定が正しいことも確認しました ([ファイル] -> [プロジェクトの設定] -> [詳細])。アプリは確かに毎回新しく再コンパイルされていました。
第二に、オブジェクトが別の手段で設定されているのではないかと考え始めました。逆方向に作業して、いくつかのブレークポイントを追加したところ、親の UINavigationController で initWithCoder が呼び出されていたことがわかりました。これは最終的に、オブジェクトで setViewControllers を呼び出し、3 つのビュー コントローラー (そのうちの 1 つは問題のあるもの) を割り当てていました。コール スタックから、ロードされている Nib ファイルが不適切なものをデシリアライズしていることを簡単に確認できました。
そこで、Xib ファイルを掘り下げ始めました。もちろん、オブジェクト名はファイルにありませんでした (grep で何も見つからなかったため、予想どおり)。ルート UINavigationController を含む Xib の部分を削除して再作成しました。これにより、Xib ファイル内のオブジェクト ID と参照が変更されました。次に、以前に削除したものと同じ名前の新しい Xib と UIViewController を作成しました。これらを作成してから再度削除した場合に Xcode が満足することを期待しています。次に、コンパイルし、それらを再削除し、Xibファイルで再度更新し、grepで再確認しました。はい、実際、その名前には何も存在しませんでした。
そしてそれはうまくいきました。この問題に数日を費やした結果、インターフェイス ビルダーにバグがあることはほぼ確実ですが、バグ レポートを提出するためにこの問題をもう一度確認しますか? 絶対違う...