2010年のiOS 3のものと同じ古いiOSプロジェクトを開いたところ、起動時にクラッシュすることがわかりました。例外は次のとおりです。
*** Terminating app due to uncaught exception 'NSGenericException', reason: 'This coder requires that replaced objects be returned from initWithCoder:'
原因を突き止めようとして、数時間プロジェクトをいじりました。アプリの大部分をゼロからやり直す以外に、知恵とリソースを使い果たしたと感じています。何が原因であるかについてのアイデアはありますか?
私の調査結果:
このプロジェクトは、AppStore で公開されているものの最新の git チェックアウトです。はい、アプリはシンプルなので、2 年間まったく更新しなくても問題なく動作します。
コンパイルするように変更したのは、ベース SDK を 4.1 (Xcode では使用できなくなりました) から iOS6 に変更し、実行をヒットすることでした。プロジェクト設定のターゲットはまだ 3.0 です。
コードのどこにも initWithCoder を呼び出したり実装したりしていないことを確認しました。示されているコードの行は、main.m の UIApplicationMain() への呼び出しに過ぎず、あまり役に立ちません。
アプリはわずか 3 ビューです。メイン、詳細、および概要。MainView または MainViewController に問題があるようです。1. 起動時に NavigationController に追加しないことを選択します。2.代わりに AboutController を追加することを選択します。
AboutView Xib を使用して MainViewController を初期化し、アプリを起動できるため、コントローラーやビュー コードではなく、Xib ファイルに問題があると思われます。
この Xib を「修正」できるのか、それとも新しい Xib を作成して GUI 要素を再レイアウトする必要があるのだろうか? それが私が恐れている唯一の前進です。アプリは単純ではありませんが、メインの (そして最も密度の高い) ビューを再レイアウトするにはまだ時間がかかります。また、最初からやり直して、ある日また同じ状況に陥る可能性よりも、問題が何であるかを知りたいと思います。
私はまったく正しい軌道に乗っていますか?問題のあるコードまたは GUI ウィジェットを追跡する方法はありますか?
アドバイスをよろしくお願いします。
更新: 新しい Xib で UI の基本を再作成し、それを使用すると、アプリは動作します。いくつかの設定を変更することで古いものを修正できるかどうかをまだ知りたい.