web-dev-qa-db-ja.com

Xcodeは各キーストローク後にストーリーボードを構築し続けます

ストーリーボードを使用した私のXcodeプロジェクトは、最近非常に奇妙な状態になりました。Xcodeは、プロジェクト全体、特に各キー押下の後、ストーリーボードを構築し続けます。この動作の理由は、プロジェクトですべての興味深いファイル(ストーリーボードとプロジェクト)を比較することも、Xcodeの設定(多分私はそれを見つけることができなかっただけでしょうか?)新しいコードを入力するときにCPUがストーリーボードの再構築に常に占有しているためです。誰もこれを見た?

141
MrTJ

これは、ソースヘッダーファイルのIB_DESIGNABLE定義が原因です。おそらく、IB_DESIGNABLEを含むヘッダーファイルが、現在編集中のソースファイルに(暗黙的にでも)含まれている場合にのみ問題になります。

IB_DESIGNABLEを無効にして、ストーリーボードとソースファイルを継続的にコンパイルする方法の決定的なソリューションは見つかりませんでした。これを一時的に無効にするXcodeフラグをいただければ幸いです。 IB_DESIGNABLE#ifdefマクロで囲みましたが、#ifdefがfalseと評価された場合でも考慮されます。 IB_DESIGNABLEを1つずつコメントアウトすると役立ちますが、多くのIB_DESIGNABLEsを使用した実行可能なソリューションではありません。

更新

私はついに、この迷惑な振る舞いを避ける簡単な方法を見つけました。アクティブなウィンドウでストーリーボードを開いて、エディターメニューから[ビューの自動更新]を無効にします。これにより、カスタムコードを使用するストーリーボードエディターのビューの更新が停止し、開発が大幅にスピードアップします。カスタムコードの視覚的なプレビューを得るために再度ジャストインタイムコンパイルが必要な場合は、このオプションを再度有効にします(ストーリーボードを再度開いて動作させる必要があるようです)。

enter image description here

動作のオン/オフを簡単に切り替えるために、command-option-control-Aなどのコマンドにキーバインディングを追加することもできます。 Xcodeでキーバインディングを追加するには、設定のコマンドコンマをタッチし、[キーバインディング]タブを選択し、検索バーを使用してコマンドを見つけ、右側の領域をダブルクリックして目的のキーストロークを追加します。

「離れる」アプローチ

または、「ビューの自動更新」をオフにし、オンにしないでください

「すべてのビューを更新」、たとえばcommand-option-shift-Rに便利なキーストロークを作成します

enter image description here

作業中に、時々、または必要に応じてcommand-option-shift-Rをタッチします。通常、ストーリーボードで作業するときにcommand-option-shift-Rをタッチするだけです。

407
MrTJ

私にはこの問題があり、受け入れられた答えは私にとってはうまくいきませんでした。

私が抱えていた問題は、XCode内の独自のタブでストーリーボードを常に開いたままにしておくと、すぐにアクセスできるようになることでした。

修正できる唯一の方法は、そのタブを閉じるか、別のファイル(通常のコードファイルなど)を選択してから、XCodeを閉じて再度開くことでした。その後、各キーストロークで再構築されなくなりました。

ただし、ストーリーボードを開いて変更を加える必要がある場合は、この問題が再発することがあるため、上記のプロセスを繰り返す必要があることに注意してください。

Appleがこれを修正するまで待ちきれません。

(ノಠ益ಠ)ノ彡┻━┻

7
Nick Kirsten