Xcodeでリファクタリング...がグレー表示(無効)になっているのはなぜですか?
クラスの名前を変更したいのですが。
ヘッダーファイルでクラスのシンボル、つまり@interface
の直後のビットを選択します。次に、リファクタリングを有効にする必要があります。
Objective-C++を使用している場合(つまり、Objective-CとC++コードを混合している場合)、C++コードのリファクタリングをサポートしていないため、リファクタリングはxcodeで無効になっています。
影響を受けるファイル(ほとんどの場合、クラスを含むファイル)が保存されていない場合、リファクタリングは無効になっている可能性があります。
私はもう5年間Xcodeを使用していますが、リファクタリングは正しく機能していません(xcode 4.6でもソースコードが破損するという大きなバグがあります!)。
回避策は常にされています(Appleのコードが失敗した場合でも、100%動作します)
この方法での成功率は100%です。 Appleの「リファクタリング->名前変更」で最新のxcodeでリファクタリングを試みたところ、失敗しました-再び!
(今回は誤ったエラー:「言語を特定できません」、Apple間違ったテキストを所定の場所に置いたエラーメッセージ)
Finderでプロジェクトに行き、get infoでファイル名を変更します。
その後、xcode-> Project Navigatorでファイルを削除します。
最後に、クラスとファイルを...に追加を右クリックして、これらのファイルを再度追加します。
それは私のために働いた。
私にとっては、開いていたXcodeプロジェクトが見つからないBase SDKを参照していたため、Refactorが無効になっていることに気付きました。プロジェクト設定を編集し、「ビルド」タブでベースSDKをあなたが持っているものに設定します(私にとってこれはiOS 4.2でした)。これにより、リファクタリングが可能になりました。
クラスのヘッダーファイルに移動して、次のような行を見つけます。
@interface YourClassName
クラスシンボル(例:YourClassName)を右クリックすると、[リファクタリング]-> [名前の変更...]を選択できるはずです。
これを試したところ、Xcode 5で動作します。
また、クラスのファイル名をxcodeの外部で変更するか、Ctrlキーを押しながらファイル名をクリックして名前を変更することもあります。ファイル名がクラス名と一致しない場合、xcodeはリファクタリングを拒否します。
この問題もありました。上記のように、不足しているSDKの検索、ファイルの保存、Objective-C++コードの検索を実行しましたが、マシンを修正するのに必要なのはXCodeの再起動だけでした。
まだ少しバグがあるようです。
ところで、これはXCode 4.0.1用でした