1

わかりました、これはかなり奇妙なエラーです。UIViewControllerサブクラスと関連する Xibがあります

これは、アウトソーサーによって最初に構築された継承されたプロジェクトの一部であり、多くのプロパティとメソッドの名前のスペルが間違っていcategorysます。categoriesmerchantesmerchantsdondone

これらのほとんどのリファクタリングは簡単で、XCode のシンボルの名前変更リファクタリング ツールはそれらを問​​題なく処理しました。

ただし、問題の xib とコントローラーでは、リファクタリング後にいくつかの実行時エラー、つまりthis class is not key value coding-compliantunrecognised selectorエラーが発生します。これらは両方とも古い名前IBOutletIBAction名前を付けています。

名前をgrepしても表示されず、特にxibをXMLソースとして検索しても表示されません。

修正された名前への参照と他のすべての呼び出しを維持しながら、問題のある2つのシンボルを追加することで、これを回避しました。(つまり、古い名前は他のコードや xib 参照にリンクしていません。)

問題は、なぜこれらの古いシンボル名がどこで呼び出されているのかということです。

(注: すべての IB 参照はチェックされており、プロジェクトは数回クリーンアップされています。)

問題の参照は次のとおりです (IB で正しくマッピングされています)。

ib プロパティ リファレンス

ib セレクタ リファレンス

ソースビューに表示される接続...

古い参照 " navTitleLavel " と "donAction" は、ソースから削除された場合にエラーをスローすることに注意してください。

ここに画像の説明を入力

ここに画像の説明を入力

現在修正済み

(何もせずに、キャッシュがシンボルを保持していると仮定します)

以下の私の回答を参照してください。シンボル参照がどこかにキャッシュされているようで、追加のアクションなしではエラーはスローされなくなりました (古い名前参照を削除するとき)。

これはプロジェクトのクリーニングに耐性があることに注意してください。

4

3 に答える 3

1

私もこの問題に遭遇しました。単純なクリーンアップでは、デバイスのキャッシュ ファイルにある可能性のある残りの参照を削除するのに必ずしも十分ではありません。単純なクリーンアップで問題が解決しない場合は、実際に iOS デバイスからアプリを削除するか、シミュレーターをリセットしてください。

于 2013-05-28T21:16:11.810 に答える
1

私は以前にそのような奇妙なエラーに遭遇し、それを解決しました

  1. プロジェクトを消去します (Command + K)。

  2. IB のすべての接続をチェックして、古いもの (ドン、カテゴリなど) にリンクしないようにします。

  3. xCode を再起動します。(実際にアプリケーションを終了して再起動します)

それが役に立てば幸い!

于 2013-02-06T08:38:27.607 に答える
0

多数のクリーンアップとトリプルチェックにもかかわらず、、、grepおよびXCodeのプロジェクトワイドテキスト検索では、エラーをスローしている参照を見つけることができませんでした。エラーが解決しませんでした。ackag

しかし、今朝私は再試行しました、そして見よ、ゴースト参照はもはやエラーをスローしません。

Project Cleanの後も持続するが、x時間後に期限切れになるある種のnib参照キャッシュがあるようです。

注:クリーン操作は、エラーを修正せずに10回を超えて実行されました。

また、質問を更新して、いくつかの説明的な詳細を提供しました。

于 2013-02-08T00:09:50.353 に答える