3

IBが古い参照や不良な参照を保持することがあり、それらを削除または編集できないようです。

編集私はこの現象に関するより多くのデータを収集することを目的として、これをwikiの質問にしました。他のコーダーがこれに遭遇した状況を含む回答は大歓迎です。

これは昨夜、テーブルコントローラーで再び私に起こりました。エラーを再現するためにスパイクプロジェクトを作成したとき、システムは予想どおりに機能しました。その後、実際のプロジェクトに戻ると、xibファイルと関連するすべてのコントローラーを削除しても、悪い動作が続きました。

元の(問題のある)xibファイルとnibファイルを使用せずにまったく新しいプロジェクトを作成すると、正しく機能しました。

この質問は、この事件の詳細についてではなく、IBにおけるこの種の事件についてです。

誰かがこのタイプの悪いIBの振る舞いについて、そしておそらくプロジェクトを無力化するよりもそれを排除するためのよりスタイリッシュな方法についてもっと知っていますか?

問題のあるIBファイルを削除して同じプロジェクトで再作成しても、これまではこれを解決できず、まったく新しいプロジェクトしか解決できなかったことに注意してください。

このグリッチがいつ/どのように観察/作成されたかの例に関する回答も歓迎します。

4

14 に答える 14

3

[ファイル]>[クラスファイルの読み取り...]をクリックし、IBをクラスファイルにポイントすることで、このタイプのキャッシュの問題を修正しました。ビンゴ、それはそれらをうまく読み、そしてすべてがうまくいった。:-)

于 2009-09-22T18:47:57.493 に答える
1

これが発生したプロジェクトがあり、IB 3.2 (732) で適切に更新しようとして頭を悩ませていました。私は本当にxibを最初からやり直したくありませんでした。*.h ファイルのドラッグ アンド ドロップ、再起動、すべての再読み込みを試みましたが、うまくいきませんでした。File->Read Class Files も試しましたが、うまくいきませんでした。奇妙なことに、File->Reload All Class Files は魅力的に機能しました。

于 2009-10-24T22:57:53.107 に答える
1

私が持っている唯一の本当の提案は、再現可能なプロジェクトを添付ファイルとしてhttp://bugreporter.apple.com/にバグ レポートを提出することです。私の経験では、Apple はこれらのことを見ています。そうは言っても、同じプロジェクトで XIB を再作成してもバグは修正されなかったとのことです。リンクのもう一方の端を交換するのはどうですか。つまり、ヘッダー ファイルを再作成し、その新しいヘッダーを既存の XIB で使用しますか? おそらくそれは、IB にそのモデルを更新するように促すのに十分です。

于 2009-01-17T11:00:57.327 に答える
1

File > Read Class Files で単一の nib ファイルを修正できることがわかりましたが、nib は将来の変更と同期したままではなく、修正はプロジェクト内の他のファイルにも適用されません。

再起動やクリーン ビルドも役に立ちませんでしたが、新しいプロジェクトは問題ありません。これは、Xcode/IB バージョン 3.2.2 で発生しています。これまでのところ、唯一の解決策は、新しいプロジェクトでコードを再構築することです。

于 2010-03-28T10:29:13.003 に答える
0

私も同じ問題を経験しました。古いXcodeバージョンで作成されたプロジェクトを開くと発生します。InterfaceBuilderはXcodeと正しく同期しません。はい、「ファイル->クラスファイルの読み取り...」を使用してIBキャッシュを手動で更新できますが、この方法でもガベージが残ります。つまり、古いIBOutletとIBActionはまだ表示されます。

于 2009-09-25T23:43:06.457 に答える
0

ヘッダーファイルを保存していますか?Interface Builderは、Xcodeのエディターで保存されていないファイルではなく、ディスク上のヘッダーファイルのコンテンツを解析します。ヘッダーファイルにコンセントを追加し、最初に保存せずにIBに戻すと、IBは新しいコンセントを認識しません。

于 2009-05-20T06:27:19.963 に答える
0

古い参照または不適切な参照とは、もはや存在しないクラスのアウトレットまたはアクションに UI 要素をリンクしようとしているということですか? その場合は、接続パネル (cmd-5) に移動し、nib ファイル内のオブジェクトを選択します。すべての接続が表示されるはずです。テキストがグレー表示され、感嘆符が付いている場所はすべて削除する必要があります (カーソルを合わせて [x] をクリックします)。

IB では、アプリの起動時にクラスがどのようになるかという「約束」に接続しているだけです。IB では通常、その約束を果たすことができるものだけを接続できますが、Xcode でヘッダーを変更すると、警告する以外に IB ができることは何もありません。

于 2009-01-17T11:08:37.187 に答える
0

このタイプのインシデントが発生し、XCode のリファクタリングを使用してクラスの名前を別の名前に変更することで修正しました。物事が再開されたようです。

于 2010-07-09T04:07:42.983 に答える
0

コードのクリーン ビルドを作成してから、古い参照が xib に残っているかどうかを確認してください。

于 2009-01-19T08:37:23.117 に答える
0

問題のあるクラスファイルをもう一度読むことで、この問題は解決しました。

于 2011-09-08T14:55:22.643 に答える
0

問題が再起動後も持続するかどうかは言わないので、この問題である可能性があると思います: Xcode のビルド プロセスには、古いバージョンの出力ファイルが /tmp フォルダーに残って取得できないというまれなバグがあります。更新しました。IIRC によると、最も簡単な解決策は、ターゲットをクリーンアップしてコンピューターを再起動することです。

于 2009-01-19T09:07:35.410 に答える
0

あなたが望む答えではないかもしれませんが、ここにあります: IB を使用しないでください! :-)

いくつかのAppleドキュメントに記載されている手順を正確に再現し、最初から何度も試しても、使用に問題がありました. そのため、3日後、私はあきらめて、プログラムですべてをやり始め、半日でプログラムを実装しました。それ以来、振り返ることはありません。サイズを確認するためにときどき IB を起動するだけなので、サイズをコードに入力できます。

私の GUI を更新するのはおそらく時間の経過とともに簡単ではなくなりますが、あなたの話が本当に再発する問題であるなら、私は野獣と別れてよかったです!

于 2009-01-17T10:43:02.807 に答える