現在、SwiftおよびXCode 6(ベータ3)を使用してiOSアプリを開発しています。
これまではすべて順調でしたが、今では私のプロジェクトが成長するにつれて、Xcodeが突然インデックス付けを開始し、それが何度も何度も行われ、Xcodeはほとんど使用できなくなりました。
同様の問題をウェブで検索して解決策を試しましたが、どれも解決しませんでした。インデックス作成プロセスを無効にしても(デフォルトではcom.Apple.dt.XCode IDEIndexDisable 1が書き込まれます)、XCodeが停止することはありません。
インデックス作成中に、CPU使用率が300%以上になり、ファンが最高速度で動作します。 Activity Monitorには、「Swift」という名前のタスクがいくつかあり、それぞれ約1GBのメモリを消費します。
ヒントや解決策は大歓迎です。
解決済み:最後に追加したファイルをプロジェクトから削除すると、問題はなくなりました。その後、問題が再現するまで、ファイルを1つずつ追加し始めました。そのため、問題の原因となっているファイルが見つかりました。その後、そのファイルから最後に追加したコードを削除しましたが、再び問題は消えました。
そのようにして、その動作を担当するコードを見つけました。
「Swift」という名前のプロセスを強制終了し、xcodeでエラーをチェックすると、コードの一部が問題を引き起こします。 Swiftには回避する必要があるバグがいくつかあります。
Xcode 7.3で私に起こった
それを解決するためにXcodeがキャッシュしたものをすべてきれいにしなければなりませんでした。
溶液:
rm -frd ~/Library/Developer/Xcode/DerivedData/*
rm -frd ~/Library/Caches/com.Apple.dt.Xcode/*
コードにも同じ問題がありました。私の解決策は、コード内の配列内のすべてのスペースを削除することでした。
例.
struct Objects {
let objectA = ["text1",
"text2",
"text3",
"text4"] }
//ノイズ、CPU 100%、永久インデックス。解決策は...
struct Objects {
let objectA = ["text1","text2","text3","text4"]}
// 解決済みスペースなしで配列または文字列を作成します。
私はこれと同じ問題を抱えており、それを解決するのに永遠にかかりました。私はこの問題に関するインターネット上のあらゆる質問を見たことがあると確信しており、すべての解決策を試しました。私がしなければならなかったことはすべてでした....
コンピューターを再起動する
数週間前にクラクフのSwift crunchにいたとき、私はその問題を抱えていました。githubにコードがあり、macbookでインデックス作成の問題が発生しました。 Macbook、同じ結果。
それは明らかにバグであり、原因はわかりませんが、考えられることは何でも試してみました(クリーン、ビルドフォルダのクリーン、リポジトリにないファイルの手動削除、再起動、プロセスの強制終了など)時間行う必要があるのは、新しいXcodeプロジェクトをゼロから作成し、他のプロジェクトからファイルを手動でインポートすることだけでした。
それ以降、他のプロジェクトでも、それは二度と起こらなかった。
XCodeのバグです。 1行の連結で発生する問題:
var value = "some text" // it can be String or Array
value = value + value1 + value2 + value3 + value4 + value5 + value6 // etc
この修正により、このバグが修正されます。
var value = "some text"
value += value1
value += value2
value += value3
value += value4
value += value5
value += value6
私はこのような辞書を作成していました
var dic1 = [
"isDestination" : self.isDestination ?? false,
"price" : self.price ?? ""
]
そしてself.priceはIntと私はそのフォールバック値を空の文字列として与えていましたで、XCodeコンパイルを台無しにしました。
私にとって、私は愚かな間違いを犯しました。私はこのようなクラスを書きます:
class A: A {
.......
}
クラスはそれ自体を継承し、フリーズを引き起こします。 Xcodeからのメッセージヒントはありません。あなたはこれを考えられる理由としてだけ取ることができます〜。
これは間違いなくXcodeのバグであり、Appleに報告しました。大きな辞書リテラルまたはネストされた辞書リテラルがある場合。辞書を小さな部分に分割し、バグが修正されるまでappendメソッドで追加する必要があります。 Xcode 8.2.1(8C1002)
NSLayoutConstraintオブジェクトを配列に追加する1回の呼び出しで同じ問題が発生しました。
解決策は、コードをいくつかの呼び出しに分割し、それぞれが3つのオブジェクトのみを配列に追加することでした。奇妙な。
それはXcode 6.4にありました
私もXcode 9.1で同じ問題に直面しました。そこで私はActivity Monitorを調べました。 Swiftプロセスは100%を超えていました。ダブルクリックして終了します。できた今はうまく機能しています。
私はこの問題を取得し、6時間後に(everithingを試み、リソースを段階的にコピーして新しいプロジェクトを再度ビルドした後)問題を見つけました。
class A : A {
...
}
コピー/貼り付けの事実により、自分自身を拡張するクラスがありました。これにより、インデックス作成がおかしくなります。
私の場合、問題はいくつかの算術的な合計が原因でした。私はすべての異なるフレームをプログラムで次のように実行するcollectionViewを作成していました:
cell.textView.frame = CGRectMake(8 + 10 + 12, 0, 150 + 6 + 6 + 4, 50)
私はそれを次のように変更しました:
cell.textView.frame = CGRectMake(30, 0, 166, 50)
マージンとパディングをより簡単に把握するのに役立ちますが、合計の結果を入れるだけでビルド速度が5〜7分から20秒程度に変わりました。
私の場合、以前のファイルでビルドされたアプリでエミュレーターを開いていました。エミュレータを閉じるだけ
リストされているすべてのことを試してみましたが、インデックスはフリーズし続けています。これは助けになりました:インデックスがフリーズし、1つ以上のSwiftプロセスがCPUの99%を消費している場合-これを強制終了しますSwiftタスク、ビット、および進行が移動する必要があります。終了するまで繰り返すことができます。私の場合、プロセスを7回強制終了しましたが、最後にインデックス作成が完了しました。
プロジェクトをバックアップして、lastoneを削除し、xcode simpleを再起動します:-)
1行の文字列の連結が多すぎると、問題が発生します。私も助けてくれました。もともとはZhenshan Yuによって指摘されていました: Xcode 6 Betaはコンパイルされていません
C++プロジェクトの作成時にXCode 6.3でこの問題が発生しました。 SubLimeでの開発に切り替える前の最後の努力は、XCodeアプリを削除して再インストールすることでした。長いプロセスでしたが、XCodeのバージョンが7.3に更新され、すべてが正常に機能するようになりました。
したがって、他に何も機能していないようであれば、アプリケーションフォルダーからXCodeを削除してから再インストールしてみてください。保持したいプロジェクトファイルを削除しないようにしてください。
しかし、そのような動作を引き起こす可能性のある1つの可能性があります。デバッグのために、システム時間を変更し、1週間前にセットアップしました-無限のインデックスを作成しました。すぐに時間を設定すると、インデックス作成が停止しました。
私の目的は、拡張子がString
の新しいファイルをプロジェクトにドラッグすることで、必要なすべてのターゲットに追加するではありませんでした。それが誰かを助けることを願っています。
Xcodeが9.2のときにこの問題が発生しました。最初にxcworkspaceファイルを削除し、他の人の答えに従ってクリーンアップしてビルドしましたが、うまくいきませんでした。その後、Xcodeを9.3に更新しましたが、動作しませんでした。私は自分のコードをチェックしましたが、最近書かれたコードがXcodeのインデックス作成を永遠に続けていることがわかりました。
TimeInterval(3600*24*(-randomDay))
それから私はそれを修正しました:
TimeInterval(-3600*24*randomDay)
出来た。多くの状況でXcodeが異常に動作する可能性があることがわかりましたので、正しい解決策は最近あなたのプロジェクトで何をしたかを考えることです
私はツールに行きました->タスクとコンテキスト->コンテキストをクリアし、それは最終的にコンピュータの休息を与えるように見えました!